2017-09-28 69 views
-1

我試圖將兩個表單提交給一個操作。我無法弄清楚這是一個好主意,以及如何做得更好。每種形式都有自己的局部視圖,並且兩種形式使用相同的模型。我的意思是模型被表格分開。一次提交兩個表單Asp.Net

這裏是視圖模型和型號:

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提交點擊添加動作。 我的意思是不要調用添加動作兩次,但獲取Foo.Name和Foo.Street從不同的窗體填充,調用添加動作,並將完全填充的Foo模型傳遞給它。

可能嗎?也許還有其他一些方法?

+1

不可以。您只能一次提交一個表單(除非您使用ajax傳遞請求中所有表單的值)。只需要一個包含來自兩個模型的輸入的表單。 –

回答

0

我想你只是在展示一個概念,因爲在這種情況下將這些小塊分割成單獨的部分視圖沒有任何意義。

但是,只需移動@using (Html.BeginForm...從每個局部視圖環繞包括所有標記在主視圖中包含兩個@{Html.RenderPartial部分。