Asp.net mvc 4 MVC 4模型值未传递给控制器操作

Asp.net mvc 4 MVC 4模型值未传递给控制器操作,asp.net-mvc-4,razor,Asp.net Mvc 4,Razor,我有视图,希望在用户单击“下一步”按钮时逐个显示会话中存储的对象的内容。视图使用WorldModel对象来显示数据。Id是隐藏字段,内容应显示在页面上 视图: 控制器:类有两个操作方法,一个不接受任何参数,另一个接受WorldModel作为参数 namespace MvcApplication4.Controllers { public class WorldController : Controller { // // GET: /World/

我有视图,希望在用户单击“下一步”按钮时逐个显示会话中存储的对象的内容。视图使用
WorldModel
对象来显示数据。Id是隐藏字段,内容应显示在页面上

视图:

控制器:类有两个操作方法,一个不接受任何参数,另一个接受
WorldModel
作为参数

namespace MvcApplication4.Controllers
{
    public class WorldController : Controller
    {
        //
        // GET: /World/

        public ActionResult View1()
        {
            List<Candidate> obj = new List<Candidate>();
            obj.Add(new Candidate() { Id = 1, Name = "ABCD", IsNameDispalyed = false});
            obj.Add(new Candidate() { Id = 2, Name = "PQR", IsNameDispalyed = false });
            obj.Add(new Candidate() { Id = 3, Name = "XYZ", IsNameDispalyed = false });

            CandidateSession cs = new CandidateSession(){Candidates=obj};
            Session["Can"] = cs;
            return View();
        }

        [HttpPost]
        public ActionResult View1(WorldModel worldModel)
        {
            CandidateSession cs = (CandidateSession)Session["Can"];
            var can1 = cs.Candidates.Where(x => x.IsNameDispalyed == false).First();
            can1.IsNameDispalyed = true;
            return View(new WorldModel() {Id=can1.Id, Content=can1.Name });
        }
    }

    public class Candidate
    {
        public int Id { get; set; }
        public string Name { get; set; }
        public bool IsNameDispalyed { get; set; }
    }

    public class CandidateSession
    {
        public List<Candidate> Candidates { get; set; }
    }
}
namespace mvcapapplication4.控制器
{
公共类控制器:控制器
{
//
//得到世界/
公共行动结果视图1()
{
List obj=新列表();
添加(新候选对象(){Id=1,Name=“ABCD”,IsNameDispalyed=false});
添加(新候选对象(){Id=2,Name=“PQR”,IsNameDispalyed=false});
添加(新候选对象(){Id=3,Name=“XYZ”,IsNameDispalyed=false});
CandidateSession cs=新CandidateSession(){Candidates=obj};
会话[“Can”]=cs;
返回视图();
}
[HttpPost]
公共行动结果视图1(WorldModel WorldModel)
{
候选会话cs=(候选会话)会话[“Can”];
var can1=cs.Candidates.Where(x=>x.IsNameDispalyed==false).First();
can1.IsNameDispalyed=true;
返回视图(newworldmodel(){Id=can1.Id,Content=can1.Name});
}
}
公开课候选人
{
公共int Id{get;set;}
公共字符串名称{get;set;}
公共bool IsNameDispalyed{get;set;}
}
公开课候选人资格
{
公共候选列表{get;set;}
}
}

当我以
”./World/View1“
的形式访问URL时,它会将数据填充到会话对象,然后单击“下一步”按钮调用操作
公共操作结果视图1(WorldModel WorldModel)
。在该方法中,我获取了未显示其信息的对象,并返回带有id和内容的
WorldModel
对象的视图。现在,第一次显示内容时,但当我单击“下一步”按钮时,它将调用action
public ActionResult View1(WorldModel WorldModel)
。但是worldModel对象的id和内容值为null。为什么数据为null,我在上一次调用中设置了值?

因为第二次单击按钮时,modelstate有一些值,即要绑定的null。在从中返回视图之前,我将调用ModelState.Clear()HttpPost@Slicksim当前位置我没有拿到。实际上,控制器正在设置绑定到视图的模型的值。现在,当用户单击Next按钮时,它会点击其中的操作,我希望获得存储在前一个请求中的值。
namespace MvcApplication4.Models
{
    public class WorldModel
    {
        public int Id { get; set; }
        public string Content { get; set; }
    }
}
namespace MvcApplication4.Controllers
{
    public class WorldController : Controller
    {
        //
        // GET: /World/

        public ActionResult View1()
        {
            List<Candidate> obj = new List<Candidate>();
            obj.Add(new Candidate() { Id = 1, Name = "ABCD", IsNameDispalyed = false});
            obj.Add(new Candidate() { Id = 2, Name = "PQR", IsNameDispalyed = false });
            obj.Add(new Candidate() { Id = 3, Name = "XYZ", IsNameDispalyed = false });

            CandidateSession cs = new CandidateSession(){Candidates=obj};
            Session["Can"] = cs;
            return View();
        }

        [HttpPost]
        public ActionResult View1(WorldModel worldModel)
        {
            CandidateSession cs = (CandidateSession)Session["Can"];
            var can1 = cs.Candidates.Where(x => x.IsNameDispalyed == false).First();
            can1.IsNameDispalyed = true;
            return View(new WorldModel() {Id=can1.Id, Content=can1.Name });
        }
    }

    public class Candidate
    {
        public int Id { get; set; }
        public string Name { get; set; }
        public bool IsNameDispalyed { get; set; }
    }

    public class CandidateSession
    {
        public List<Candidate> Candidates { get; set; }
    }
}