您好,登錄后才能下訂單哦!
本文小編為大家詳細(xì)介紹“ASP.NET MVC怎么實(shí)現(xiàn)增加一條記錄同時(shí)添加N條集合屬性所對(duì)應(yīng)的個(gè)體”,內(nèi)容詳細(xì),步驟清晰,細(xì)節(jié)處理妥當(dāng),希望這篇“ASP.NET MVC怎么實(shí)現(xiàn)增加一條記錄同時(shí)添加N條集合屬性所對(duì)應(yīng)的個(gè)體”文章能幫助大家解決疑惑,下面跟著小編的思路慢慢深入,一起來(lái)學(xué)習(xí)新知識(shí)吧。
類別中包含一個(gè)產(chǎn)品的集合屬性,如何向數(shù)據(jù)庫(kù)添加一條類別記錄的同時(shí),添加任意多個(gè)產(chǎn)品。
public class Product { [DisplayName("產(chǎn)品名稱")] 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
...
前臺(tái)視圖使用jquery動(dòng)態(tài)生成input,并把input的name屬性設(shè)置成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="添加產(chǎn)品"/> </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> }
沒(méi)有添加產(chǎn)品前:
添加產(chǎn)品集合:
public ActionResult Index() { return View(); } [HttpPost] public ActionResult Create(Category category) { return View(); }
斷點(diǎn)調(diào)試:
以上做法至少有二個(gè)弊端:
1、無(wú)法對(duì)新添加的集合屬性對(duì)應(yīng)的個(gè)體進(jìn)行驗(yàn)證。
2、如果破壞集合元素的連續(xù)性,會(huì)影響控制器不能完全接收所有集合記錄。
Category.Name
Category.Products[0].Name
Category.Products[3].Name
Category.Products[6].Name
控制器只能接收到集合中的第一條記錄,即Category.Products[0].Name,也就是說(shuō),一旦集合元素不是連續(xù)的,控制器將不能接收到全部集合記錄。
把noOfProducts++;改成noOfProducts = noOfProducts + 3;
斷點(diǎn)調(diào)試:
只能接收到一條記錄。
讀到這里,這篇“ASP.NET MVC怎么實(shí)現(xiàn)增加一條記錄同時(shí)添加N條集合屬性所對(duì)應(yīng)的個(gè)體”文章已經(jīng)介紹完畢,想要掌握這篇文章的知識(shí)點(diǎn)還需要大家自己動(dòng)手實(shí)踐使用過(guò)才能領(lǐng)會(huì),如果想了解更多相關(guān)內(nèi)容的文章,歡迎關(guān)注億速云行業(yè)資訊頻道。
免責(zé)聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點(diǎn)不代表本網(wǎng)站立場(chǎng),如果涉及侵權(quán)請(qǐng)聯(lián)系站長(zhǎng)郵箱:is@yisu.com進(jìn)行舉報(bào),并提供相關(guān)證據(jù),一經(jīng)查實(shí),將立刻刪除涉嫌侵權(quán)內(nèi)容。