提交两个表单到一个动作Asp.Net

时间:2017-09-28 07:05:06

标签: asp.net asp.net-mvc forms partial-views

我正在尝试将两种表单提交给一个操作。我无法弄清楚这是一个好主意,如何做得更好。每个表单都有自己的局部视图,两个表单都使用相同的模型。我的意思是模型按表格划分。

以下是视图模型和模型:

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模型传递给它。

有可能吗?也许还有其他一些方法?

1 个答案:

答案 0 :(得分:0)

我想你只是在展示一个概念,因为在这种情况下将这些小块分成单独的局部视图没有任何意义。

但是,只需从每个局部视图移动@using (Html.BeginForm...包装,即在主视图中包含所有标记,其中包含两个@{Html.RenderPartial部分。