MVC创建记录

时间:2014-02-08 22:34:43

标签: asp.net-mvc-4

查看代码:

@model EI.Models.QuoteModel

@using (Html.BeginForm()) {
    @Html.AntiForgeryToken()
    @Html.ValidationSummary(true)

    //a bunch of input fields

    <input type="submit" value="Create" />
}

控制器代码:

    public ActionResult Create(QuoteModel qm) {
        if (ModelState.IsValid) {
            db.QuoteModels.Add(qm);
            db.SaveChanges();
            return RedirectToAction("Index");
        }
        return View();
    }

我填写视图中的字段并单击“创建”,但它不会进入Create方法。

我错过了什么?

2 个答案:

答案 0 :(得分:1)

您可以在BeginForm方法中指定操作名称,如此

@using (Html.BeginForm("Create", "ControllerName")) {
@Html.AntiForgeryToken()
@Html.ValidationSummary(true)

    //a bunch of input fields

    <input type="submit" value="Create" />
}

如果视图文件的名称与操作名称不匹配,则必须提供名称。

答案 1 :(得分:1)

由于您未在BeginForm帮助程序中明确指定actionName,因此假定视图是从具有相同名称且位于同一控制器中的控制器操作呈现的:

public ActionResult Create(int id) {
    var qm = db.QuoteModels.Single(id);
    return View(qm);
}

如果不是,则应明确指定操作名称:

@using (Html.BeginForm("Create", null, FormMethod.Post))