2014-02-18 83 views
1

我如何在提交主要View.the局部視圖局部視圖提交的數據沒有單獨提交按鈕與主要形式提交部分查看數據在asp.net MVC

我想加入多個產品在一個Order.Each產品是部分視圖。 用戶可以點擊「加號」添加多個產品。我希望在提交訂單時提交所有產品。 我下訂單View是

@model MyApp.Models.Order_Detail 
     @section scriptsection { 
     <script src="@Url.Content("~/Scripts/jquery.validate.min.js")" type="text/javascript"></script> 
     <script src="@Url.Content("~/Scripts/jquery.validate.unobtrusive.min.js")" type="text/javascript"></script> 
     <script src="../../Scripts/jquery-1.4.4.min.js" type="text/javascript"></script> 
     <script type="text/javascript"> 
      $(document).ready(function() { 
       $(".addProduct").live("click", function() { 
        $.get("AddProduct", 
        function (data) { 
         $("#Products").append(data); 
         HideshowMinusButton(); 
        }); 
       }); 
     </script> 
    } 
    @using (Html.BeginForm()) { 
     @Html.ValidationSummary(true) 
     <fieldset> 
      <legend>Order</legend> 

      <div class="editor-label"> 
       Customer 
      </div> 
      <div class="editor-field"> 
       @Html.DropDownListFor(c=>c.Order.CustomerID,(List<SelectListItem>)ViewBag.Customers) 
      </div> 
      <div> 
       <fieldset id="Products"> 
        <legend>Products</legend> 
        @Html.Partial("AddProduct") 
       </fieldset> 
      </div> 
      <div class="editor-label"> 
       @Html.LabelFor(model => model.Order.OrderDate) 
      </div> 
      <p> 
       <input type="submit" value="Create" /> 
      </p> 
     </fieldset> 

在提交按鈕單擊我如何​​得到我的訂單中的所有產品?

[HttpPost] 
public ActionResult PlaceOrder(Order_detail Ord) //Ord Doesn't Contain Products ?? 
{ 
//Add Order to Db 
return View("Success"); 

}

回答

2

看看這個頁面,我認爲這將能夠幫助您。

http://haacked.com/archive/2008/10/23/model-binding-to-a-list.aspx/

你可以改變你的操作方法對

public ActionResult PlaceOrder(Order_detail Ord, Products[] products) 

或使用http://www.nuget.org/packages/BeginCollectionItem/綁定模型到模型Order_detail。

+0

它解釋瞭如何複雜的對象綁定......但沒有項目被固定在....我的問題,用戶可以添加多個產品。 ..如何做到這一點?....你也添加了第二個參數(產品)如何獲得該參數中的所有產品 –

0

您可以使用post方法中的表單集合來獲取部分視圖中的數據。

[HttpPost] 
public ActionResult PlaceOrder(Order_detail Ord, FormCollection fc) 
{ 
    string value = fc.getValue("textBoxName"); 
} 

只有當控件具有name屬性時,纔會在表單集合中獲得值。

例:

<input name="users" type="text"/> 

然後

String Value = fc.getvalue("users"); 
+0

謝謝..這有助於很多...但如果用戶添加多個產品會有多個輸入同名的標籤....我如何獲得這些價值? –

+0

然後您應該使用fc.getvalues(「users」)並遍歷結果以獲取控件的各個值 – KNC