我的mvc动作无法更新模型

时间:2014-03-22 16:41:10

标签: asp.net-mvc asp.net-mvc-4

我正在尝试使用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);
    }

这种方法中的一种获取模型,另一种方法用于后期更新模型。但它不起作用。为什么? 最好的问候

1 个答案:

答案 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)
像这样的事情。然后在帖子后面,字段名称将具有与其绑定的文本框的值