【发布时间】:2012-12-13 20:32:43
【问题描述】:
我是 asp.net mvc 的新手,我正在尝试为 asp.net mvc 开发一个可重复使用的联系表单组件。
我尝试用表单创建一个 PartialView,我不知道这是否是更好的方法,用于创建一个可重用的组件
我的部分视图是
@model MyModel.ContactData
@using (Html.BeginForm("ContactForm", "ContactForm", FormMethod.Post)) {
<fieldset>
<p>
@Html.LabelFor(model => model.MailAddress)
@Html.EditorFor(model => model.MailAddress)
</p>
<p>
@Html.LabelFor(model => model.Message)
@Html.TextAreaFor(model => model.Message)
</p>
<input type="submit" value="Save" />
</fieldset>
}
问题从控制器开始,控制器是只有这个partialView的特定控制器。
public class ContactFormController : Controller
{
[HttpPost]
public ActionResult ContactForm(ContactData contactData)
{
if (ModelState.IsValid)
{
return PartialView("MessageSend");
}
return PartialView();
}
}
我的问题是某些必填字段为空的情况下,在这种情况下,控制器仅返回部分视图,而不是在其父上下文中返回部分视图。我尝试将父视图中的 PartialView 调用为 @Html.Partial、@Html.RenderAction、@Html.RenderPartial 并且发生同样的情况。
如何在其父上下文中返回部分视图?我试过了 return View(ParentViewsName, contactData) 但我不喜欢它,因为在提交表单时,它会将地址栏上的 url 从 /Contact 更改为 /ContactForm/ContactForm。
也许我试图用错误的方法创建一个可重用的组件?最好只用 ajax 更新 PartialView?替代品?
谢谢
【问题讨论】:
标签: asp.net-mvc