众所周知,RenderAction()
是其中一部分:
允许我们在另一个视图或局部视图中渲染动作结果。
RenderAction()
帮助程序显示多个部分视图的视图。<form>
来呈现Html.BeginForm()
。当其中一个表单被回发后,另一个表单呈现为无效。
是否有人使用此模式并解决了它?我们应该知道哪个form
执行了回发,只有那个应该验证其POST数据。其他人应该忽略验证或执行常规的HttpVerb.Get
操作处理。
答案 0 :(得分:1)
在表单中有一个隐藏字段以指示哪一个。或者,将前缀传递给partial并附加到表单中的每个元素。
关于前缀。第一种方法是有两个属性,调用Html.RenderPartial(“partial”,Model.Data1 / 2.WithPrefix(“data1”))。
public class FormModel
{
public string Prefix { get; set; }
}
public class FormData
{
public FormModel Data1 { get; set; }
public FormModel Data2 { get; set; }
}
public ActionResult HandlePost(FormData data)
{
if (data.Data1 != null) {} else {}
}
第二种方法是相同的,但使用两个动作参数。
public ActionResult HandlePost(FormModel data1, FormModel data2)
{
if (data1 != null) {} else {}
}
在局部视图中
<%= Html.TextBox(Model.Prefix + ".FormModelField", Model.FormModelField) %>
即,您使用模型中传递的前缀设置字段名称。
当然,您可以在详细信息中对此进行更改。