使用部分视图错误提交表单

Form submit using partail View error

我创建了一个用于添加评论的表单。我在 Home 控制器中名为 Index 的主视图中创建了它。下面是索引视图

private projectDBEntities db = new projectDBEntities();
    public ActionResult Index()
    {
        ViewBag.Message = "Modify this template to jump-start your ASP.NET MVC application.";

        return View();
    }

    public ActionResult AddComment()
    {
        return PartialView("_Comment");
    }


    [HttpPost]
    [ValidateAntiForgeryToken]
    public ActionResult AddComment(comment cmt)
    {
        if (ModelState.IsValid)
        {
            db.comments.Add(cmt);
            db.SaveChanges();
            return RedirectToAction("Index", "Home");
        }
        return PartialView("_Comment", cmt);
    }

以下是_评论部分视图

@using (Html.BeginForm()) {@Html.AntiForgeryToken()@Html.ValidationSummary(true)
<fieldset>
    <legend>comment</legend>

    <div class="editor-label">
        @Html.LabelFor(model => model.cmd_content)
    </div>
    <div class="editor-field">
        @Html.EditorFor(model => model.cmd_content)
        @Html.ValidationMessageFor(model => model.cmd_content)
    </div>

    <div class="editor-label">
        @Html.LabelFor(model => model.t_email)
    </div>
    <div class="editor-field">
        @Html.EditorFor(model => model.t_email)
        @Html.ValidationMessageFor(model => model.t_email)
    </div>
    <p>
        <input type="submit" value="Comment" />
    </p>
</fieldset>}

System.Web.HttpException 发生了。我想知道此错误背后的原因是什么以及使用部分视图提交表单的最佳方法是什么。

@using (Html.BeginForm("AddComment", "Home")) {

}

我不得不同意 Sandip 在这里的回答,但要详细说明..

@using (Html.BeginForm("AddComment", "Home")) 
{
        //Content to send to the server-side
}

只要您的局部视图中的模型指向您的 'Comment' 对象,那么在使用 @Html.EditorFor() 时应该可以正常工作。在您的控制器中,您已经在等待 'Comment' 对象被填充。所以在 Post 上,单击提交时,它将填充该对象。

希望对您有所帮助。