我正在尝试将两种表单提交给一个操作。我无法弄清楚这是一个好主意,如何做得更好。每个表单都有自己的局部视图,两个表单都使用相同的模型。我的意思是模型按表格划分。
以下是视图模型和模型:
public class TestViewModel
{
public Foo Foo { get; set; }
// here is some other data for main form
}
public class Foo
{
public string Name { get; set; }
public string Street { get; set; }
}
行动方法:
[HttpPost]
public ActionResult Add(Foo foo)
{
return View();
}
主要观点:
@model SushiJazz.Models.ViewModels.TestViewModel
<body>
<div id="frmName">
@{Html.RenderPartial("NameFrm"); }
</div>
<div id="frmStreet">
@{Html.RenderPartial("StreetFrm"); }
</div>
<div>
<input type="submit" value="btn" id="btn-submit"/>
</div>
</body>
第一种形式:
@model SushiJazz.Models.ViewModels.TestViewModel
@using (Html.BeginForm("Add", "Test", FormMethod.Post, new { @id="name-frm"}))
{
@Html.TextBoxFor(model => model.Foo.Name);
<input type="submit" value="name" />
}
第二种形式:
@model SushiJazz.Models.ViewModels.TestViewModel
@using (Html.BeginForm("Add", "Test", FormMethod.Post, new { @id="street-frm"}))
{
@Html.TextBoxFor(model => model.Foo.Street)
<input type="submit" value="street" />
}
我想通过btn-submit提交两个表单点击添加操作。 我的意思是不要再调用Add动作两次,而是从不同的表单中填充Foo.Name和Foo.Street,调用Add动作并将完全填充的Foo模型传递给它。
有可能吗?也许还有其他一些方法?
答案 0 :(得分:0)
我想你只是在展示一个概念,因为在这种情况下将这些小块分成单独的局部视图没有任何意义。
但是,只需从每个局部视图移动@using (Html.BeginForm...
包装,即在主视图中包含所有标记,其中包含两个@{Html.RenderPartial
部分。