我创建了一个用于添加评论的表单。我在主视图中创建了它,称为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形成提交的最佳方法是什么。
答案 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上,当点击提交时,它将填充该对象。
希望这有帮助。