表单提交使用partail查看错误

时间:2016-06-16 09:08:42

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

我创建了一个用于添加评论的表单。我在主视图中创建了它,称为Home in Home controller。下面是索引视图

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);
    }

下面是_Comment Partial View

@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已被占用。我想知道这个错误背后的原因是什么,使用partail View形成提交的最佳方法是什么。

2 个答案:

答案 0 :(得分:0)

@using(Html.BeginForm(&#34; AddComment&#34;,&#34; Home&#34;)) {

}

答案 1 :(得分:0)

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

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

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

希望这有帮助。