您好,登錄后才能下訂單哦!
本文小編為大家詳細介紹“ASP.NET MVC怎么實現增加一條記錄同時添加N條集合屬性所對應的個體”,內容詳細,步驟清晰,細節處理妥當,希望這篇“ASP.NET MVC怎么實現增加一條記錄同時添加N條集合屬性所對應的個體”文章能幫助大家解決疑惑,下面跟著小編的思路慢慢深入,一起來學習新知識吧。
類別中包含一個產品的集合屬性,如何向數據庫添加一條類別記錄的同時,添加任意多個產品。
public class Product { [DisplayName("產品名稱")] public string Name { get; set; } } public class Category { [DisplayName("類別名稱")] public string Name { get; set; } private IList<Product> _products = new List<Product>(); public IList<Product> Products { get { return _products; } set { _products = value; } } }
控制器方法能接收的格式為:
Category.Name
Category.Products[0].Name
Category.Products[1].Name
...
前臺視圖使用jquery動態生成input,并把input的name屬性設置成Category.Products[i].Name格式。
@model AddingMultipleNestedData.Models.Category @{ ViewBag.Title = "Index"; Layout = "~/Views/Shared/_Layout.cshtml"; } @using (Html.BeginForm("Create", "Home", FormMethod.Post, new {id = "addForm"})) { <div> @Html.LabelFor(m => m.Name) @*@Html.EditorFor(m => m.Name)*@ @Html.TextBox("Category.Name") </div> <div id="products"></div> <div> <input id="btnAddProduct" type="button" value="添加產品"/> </div> <div> <input type="submit" value="提交"/> </div> } @section scripts { <script type="text/javascript"> $(function() { var noOfProducts = 0; $('#btnAddProduct').click(function() { var product = getNestedName("Category.Products", noOfProducts); noOfProducts++; $('#products').append("<input type='text' name='"+product+".Name' /><p>"); }); }); function getNestedName(itemName, itemNumber) { return (itemName + "[" + itemNumber + "]"); } </script> }
沒有添加產品前:
添加產品集合:
public ActionResult Index() { return View(); } [HttpPost] public ActionResult Create(Category category) { return View(); }
斷點調試:
以上做法至少有二個弊端:
1、無法對新添加的集合屬性對應的個體進行驗證。
2、如果破壞集合元素的連續性,會影響控制器不能完全接收所有集合記錄。
Category.Name
Category.Products[0].Name
Category.Products[3].Name
Category.Products[6].Name
控制器只能接收到集合中的第一條記錄,即Category.Products[0].Name,也就是說,一旦集合元素不是連續的,控制器將不能接收到全部集合記錄。
把noOfProducts++;改成noOfProducts = noOfProducts + 3;
斷點調試:
只能接收到一條記錄。
讀到這里,這篇“ASP.NET MVC怎么實現增加一條記錄同時添加N條集合屬性所對應的個體”文章已經介紹完畢,想要掌握這篇文章的知識點還需要大家自己動手實踐使用過才能領會,如果想了解更多相關內容的文章,歡迎關注億速云行業資訊頻道。
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。