我正在尝试使用MVC更新我的模型,所以我写这段代码来做到这一点:
SemesterRepositor obj = new SemesterRepositor();
public ActionResult Edit(int id)
{
return View(obj.FindSemesterById(id));
}
[HttpPost]
public ActionResult Edit(int id,FormCollection collection)
{
var review = obj.FindSemesterById(id);
if (TryUpdateModel(review))
{
RedirectToAction("Index");
}
return View(review);
}
这种方法中的一种获取模型,另一种方法用于后期更新模型。但它不起作用。为什么? 最好的问候
答案 0 :(得分:1)
有很多方法可以将数据从视图发送回控制器。最简单的方法是将视图上的模型项绑定到帮助程序(显示除外),然后回发。你对post方法的输入需要包含模型
[HttpPost]
public ActionResult Edit(SemesterRepositor sr){
//save the data in sr to your database
RedirectToAction("Index");
}
您将表单集合作为post方法的输入,该方法将包含您视图中的字段,但保存将各个字段传递到数据库所需的值。在您的代码中,您可以通过id找到学期,但是您没有将表单集合值设置为该对象,因此它始终为空
更新
如果您的视图顶部有@model SemesterRepositor,并且您在视图中使用帮助器,则您的字段将与模型绑定
@model SemesterRepositor
@Html.TextBoxFor(x => x.Name)
像这样的事情。然后在帖子后面,字段名称将具有与其绑定的文本框的值