我正在尝试从ASP.NET背景学习MVC 3和Razor。
我想要一个简单的局部视图(在共享文件夹中)发布到特定的控制器,以便我可以在其他地方重复使用它,例如文章,博客等。我尝试使用以下变体。
@using (Html.BeginForm("Create", "Comment", FormMethod.Post, new { }))
{
<div>
<fieldset>
<legend>Comments</legend>
<div >
@Html.LabelFor(m => m.Name)
@Html.TextBoxFor(m => m.Name)
</div>
<div >
@Html.LabelFor(m => m.Email)
@Html.TextBoxFor(m => m.Email)
</div>
<div >
@Html.LabelFor(m => m.Body)
@Html.TextBoxFor(m => m.Body)
</div>
<p>
<input type="submit" value="Create" />
</p>
</fieldset>
</div>
}
这不会发布到评论控制器动作创建如下所示。
[HttpPost]
public ActionResult Create()
{
// Save comment code here
return View();
}
有什么简单的方法可以做到这一点,而不必绑定到特定的路线?
答案 0 :(得分:1)
我找到了答案。
@using (Ajax.BeginForm("Create", "Comment", new AjaxOptions() {
UpdateTargetId = "MainContainer" }))
{
<div>
<fieldset>
<legend>Comments</legend>
<div >
@Html.LabelFor(m => m.Name)
@Html.TextBoxFor(m => m.Name)
</div>
<div >
@Html.LabelFor(m => m.Email)
@Html.TextBoxFor(m => m.Email)
</div>
<div >
@Html.LabelFor(m => m.Body)
@Html.TextBoxFor(m => m.Body)
</div>
<p>
<input type="submit" value="Create" />
</p>
</fieldset>
</div>
}
这使用ajax回发并且不会更改URL。或者你可以使用JQuery http://jvance.com/blog/2010/02/20/MakingAnAjaxFormWithJQueryInASPdotNETMVC.xhtml
这样做