我是 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>
}
问题从控制器开始,控制器是仅针对此部分视图的特定控制器。
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,同样的情况也会发生。
如何在其父上下文中返回部分视图?我曾尝试使用返回视图(ParentViewsName,contactData),但我不喜欢它,因为在提交表单时,它会将地址栏上的 URL 从 /Contact 更改为 /ContactForm/ContactForm。
也许我试图用错误的方法创建一个可重用的组件?最好只用 ajax 更新 PartialView?备择方案?
谢谢