当前位置: 代码迷 >> ASP.NET >> MVC的controller传model给view同时赋值有关问题
  详细解决方案

MVC的controller传model给view同时赋值有关问题

热度:7854   发布时间:2013-02-25 00:00:00.0
MVC的controller传model给view同时赋值问题
自学MVC,开发一个小型的论坛系统。

用户在发帖的时候,访问的是 Title/Create/{ForumID}

下面是Controller,我的想法是在新建title时将title的ForumID赋值
C# code
        public ActionResult Create(int id)        {            Title title = new Title()            {                ForumID = id            };            return View(title);        }


C# code
        [AcceptVerbs(HttpVerbs.Post), Authorize]        public ActionResult Create(Title title)        {            UserRepository userRepository = new UserRepository();            if (ModelState.IsValid)            {                try                {                    title.CreateUserID = userRepository.GetUser(User.Identity.Name).aspnet_User.UserId;                    title.CreateTime = DateTime.Now;                    titleRepository.Add(title);                    titleRepository.Save();                    return RedirectToAction("Details", new { id = title.TitleID });                }                catch(Exception ex)                {                    ModelState.AddRuleViolations(title.GetRuleViolations());                    Response.Write(ex.Message);                }            }            return View(title);        }


结果报错,在追踪时发现第二个Create Controller里,title对象的ForumID值又变为0了。
难道public ActionResult Create(Title title)接收的title不是public ActionResult Create(int id)传过去的。
如果该方法行不通的话,public ActionResult Create(Title title)如何获取当前页面Route的id值。

------解决方案--------------------------------------------------------
一般地说,都是在数据库里面配置一个自动增长的id,没必要这么写。
------解决方案--------------------------------------------------------
将id 放进一个控件中; 如: @Html.HiddenFor(x => x.ID)
  相关解决方案