2014-04-17 188 views
4

我想通過單擊添加按鈕動態添加文本框,可以刪除文本框,最後可以從文本框中保存列表值。 我的模特類動態添加文本框並將值保存到asp.net數據庫mvc

public class CustModel 
{ 
    public List<Cust> CustList { get; set; } 
} 

public class Cust 
{ 
    public string Name { get; set; } 
} 
My controller class 


public class HomeController : Controller 
    { 
     private DB _entities; 

     public HomeController() 
     { 
      _entities = new DbEntities(); 
     } 

     public ActionResult Index() 
     { 
       return View(_customers); 

     } 
     [HttpPost] 
     public ActionResult Index(CustModel model) 
     { 
       // save to the database 
       return View(); 

     } 
    } 

我想知道.cshtml代碼。或者任何其他建議將列表項目提交給數據庫。

回答

8

這是我會怎麼做:

在CustModel,我將屬性更改爲IEnumerable的。我將使用EditorTemplate作爲Cust,這將節省額外的循環。

public class CustModel 
{ 
    public IEnumerable<Cust> CustList { get; set; } 
} 

我Index.cshtml觀點是簡單而有所不同,我宣佈強類型的模型,然後在表格我有@Html.EditorFor爲CUSTLIST,一個按鈕來添加新的卡斯特,一鍵提交和JQuery腳本來添加新卡斯特。請注意,在jQuery中,我創建了一系列控件,以便模型聯編程序可以正確地選擇它們。

Index.cshtml

@model MvcApplication2.Models.CustModel 

@{ 
    ViewBag.Title = "Home Page"; 
} 


@using (Html.BeginForm()) { 
    <fieldset> 
     <legend></legend> 
     <div id="divcust"> 
      @Html.EditorFor(m=>m.CustList) 
     </div> 
     <input id="btnAdd" type="button" value="Add Cust" onclick="AddCust();" /> 
     <br /> 
     <br /> 
     <input type="submit" value="Submit" /> 
    </fieldset> 
} 
<script> 
    function AddCust() { 
     var m = $('#divcust input:last-child').attr('name'); 
     var index = 0; 
     if (m != null && m.length > 0) { 
      index = m.split('CustList[')[1].replace('].Name', ''); 
      index++; 
     } 

     var html = '<label for=\"CustList_' + index + '__Name\">Name</label>' + 
      '<input id=\"CustList_' + index + '__Name\" class=\"text-box single-line\"' + 
      ' type=\"text\" value=\"\" name=\"CustList[' + index + '].Name\">'; 
     $('#divcust').append(html); 


    }; 
</script> 

我已經在我看來/ home文件夾中添加一個文件夾EditorTemplates並增加了卡斯特一個觀點:

Cust.cshtml

@model MvcApplication2.Models.Cust 

@Html.LabelFor(m=>m.Name) 
@Html.EditorFor(m=>m.Name) 

現在一切正常,我可以添加新的客戶併發布他們保存。

enter image description here

如果我想添加刪除功能,我必須要小心,以保持我的控制陣列的完整性。

+1

您能告訴我DeleteCust功能嗎? –

相關問題