部分视图和html表单Asp-Mvc
本文关键字:表单 Asp-Mvc html 视图 | 更新日期: 2023-09-27 18:29:01
我正在尝试呈现包含一个简单html表单的部分视图。我希望在处理重载控制器方法的回发时从控制器呈现该表单。我尝试过@Html.Action("ContactForm"),但由于子操作无法重定向,所以出现异常。
我的控制器:
public ActionResult Index()
{
return View();
}
[HttpGet]
public ActionResult ContactForm()
{
return PartialView(new ContactForm());
}
[HttpPost]
public ActionResult ContactForm(ContactForm Contact)
{
return RedirectToAction("FormResults", new { ContactForm = Contact });
}
public ActionResult FormResults(ContactForm Contact)
{
return PartialView(Contact);
}
我的表单:
@using(Html.BeginForm())
{
<h2>Contact Form</h2>
<div class="input-group">
<h4>@Html.LabelFor(m => m.FirstName, "First Name")</h4>
@Html.TextBoxFor(m => m.FirstName, new { @class = "form-control", @placeholder = "First Name" })
</div>
<div class="input-group">
<h4>@Html.LabelFor(m => m.LastName, "Last Name")</h4>
@Html.TextBoxFor(m => m.LastName, new { @class = "form-control", @placeholder = "Last Name" })
</div>
<div class="input-group">
<h4>@Html.LabelFor(m => m.Email, "Email")</h4>
@Html.TextBoxFor(m => m.Email, new { @class = "form-control", @placeholder = "Email", @type = "text" })
</div>
<input type="submit" class="btn btn-info" value="Submit" />
}
如能为我提供帮助,我将不胜感激。
尝试用div和某个id包围表单并使用:
@using(Ajax.BeginForm("ContactForm","YourController",new AjaxOptions()
{
InsertionMode = InsertionMode.Replace,
UpdateTargetId = "yourCertainId",
HTTPMethod = "POST"
})
和你的行动方法:
[HttpPost]
public ActionResult ContactForm(ContactForm Contact)
{
return Partial("YourPartialName", Contact });
}
确保在视图底部包含bundle jqueryval。
您不需要第二个控制器方法"FormResults"
这样的东西不适合你吗?
我认为你不需要重定向。
[HttpPost]
public ActionResult ContactForm(ContactForm Contact)
{
return PartialView("FormResults", Contact);
}
这使用
PartialView(string viewName, object model)
Controller类中PartialView方法的重载。
这允许您使用与ActionResult的方法名称不匹配的视图。
同样的道理也适用于普通的"View"方法。