欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

ASP.NET?MVC增加一條記錄同時(shí)添加N條集合屬性所對應(yīng)的個(gè)體

 更新時(shí)間:2022年08月23日 08:42:39   作者:Darren?Ji  
這篇文章介紹了ASP.NET?MVC增加一條記錄同時(shí)添加N條集合屬性所對應(yīng)個(gè)體的方法,文中通過示例代碼介紹的非常詳細(xì)。對大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下

類別中包含一個(gè)產(chǎn)品的集合屬性,如何向數(shù)據(jù)庫添加一條類別記錄的同時(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格式。

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="添加產(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>
}

沒有添加產(chǎn)品前:

添加產(chǎn)品集合:

HomeController

        public ActionResult Index()
        {
            return View();
        }
 
        [HttpPost]
        public ActionResult Create(Category category)
        {
            return View();
        }

斷點(diǎn)調(diào)試:       

更新

以上做法至少有二個(gè)弊端:

1、無法對新添加的集合屬性對應(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,也就是說,一旦集合元素不是連續(xù)的,控制器將不能接收到全部集合記錄。

把noOfProducts++;改成noOfProducts = noOfProducts + 3;

斷點(diǎn)調(diào)試: 

只能接收到一條記錄。

以上就是這篇文章的全部內(nèi)容了,希望本文的內(nèi)容對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,謝謝大家對腳本之家的支持。如果你想了解更多相關(guān)內(nèi)容請查看下面相關(guān)鏈接

相關(guān)文章

最新評論