ASP.NET?MVC增加一條記錄同時添加N條集合屬性所對應的個體
類別中包含一個產品的集合屬性,如何向數(shù)據(jù)庫添加一條類別記錄的同時,添加任意多個產品。
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動態(tài)生成input,并把input的name屬性設置成Category.Products[i].Name格式。
Home/Index.cshtml視圖
@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> }
沒有添加產品前:
添加產品集合:
HomeController
public ActionResult Index() { return View(); } [HttpPost] public ActionResult Create(Category category) { return View(); }
斷點調試:
更新
以上做法至少有二個弊端:
1、無法對新添加的集合屬性對應的個體進行驗證。
2、如果破壞集合元素的連續(xù)性,會影響控制器不能完全接收所有集合記錄。
Category.Name
Category.Products[0].Name
Category.Products[3].Name
Category.Products[6].Name
控制器只能接收到集合中的第一條記錄,即Category.Products[0].Name,也就是說,一旦集合元素不是連續(xù)的,控制器將不能接收到全部集合記錄。
把noOfProducts++;改成noOfProducts = noOfProducts + 3;
斷點調試:
只能接收到一條記錄。
以上就是這篇文章的全部內容了,希望本文的內容對大家的學習或者工作具有一定的參考學習價值,謝謝大家對腳本之家的支持。如果你想了解更多相關內容請查看下面相關鏈接
- ASP.NET MVC使用jQuery Template實現(xiàn)批量更新
- ASP.NET一次性對GridView批量更新多行數(shù)據(jù)
- ASP.NET MVC實現(xiàn)批量文件上傳
- 在ASP.NET 2.0中操作數(shù)據(jù)之六十四:GridView批量添加數(shù)據(jù)
- 在ASP.NET 2.0中操作數(shù)據(jù)之六十三:GridView實現(xiàn)批量刪除數(shù)據(jù)
- 在ASP.NET 2.0中操作數(shù)據(jù)之六十二:GridView批量更新數(shù)據(jù)
- 在ASP.NET 2.0中操作數(shù)據(jù)之三十七:DataList批量更新
- asp.net批量多選文件上傳解決方案
相關文章
asp.net中DBNull.Value,null,String.Empty區(qū)別淺析
這篇文章來給大家介紹asp.net中DBNull.Value,null,String.Empty區(qū)別淺析,有需要的同學可以參考一下2013-08-08Net Core Web Api項目與在NginX下發(fā)布的方法
這篇文章主要介紹了Net Core Web Api項目與在NginX下發(fā)布的方法,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習學習吧2020-03-03