2014-03-29 64 views
0

我必須在ASP.NET MVC 4中使用模型對話框實現創建/編輯功能,實體框架數據庫第一種方法如下圖所示:如何在asp.net mvc 4模型對話框中動態添加用戶動態添加的數據

enter image description here

在搜索此解決方案時,我已閱讀了以下文章。

CLICK HERE TO BROWSE

這是非常相似的是我想要的,但唯一不同的是,在我的情況下的Emp名稱和環境管理計劃的代碼是靜態的,但是用戶可以在字段1場的客戶端動態添加行2評論部分所以在這種情況下如何保存(創建/編輯)數據(由用戶動態添加)到數據庫中。

tblEmployee - >此表具有的EmpID,的Emp名稱和代碼的Emp柱

tblTable1 - >此表具有ID(主鍵),的EmpID(外鍵),Detail1

tblTable2 - >此表有ID(主鍵),的EmpID(外鍵),Detail2

我必須做使用JSON/Ajax方法或你建議別的東西。

謝謝

回答

0

在你控制器的參數設置你的動態屬性爲數組。

在客戶端添加新行時,請將控件的名稱與參數名的名稱相同。即:

<input type="text" name="Detail1[0]" /> 
<input type="text" name="Detail1[1]" /> 
<input type="text" name="Detail1[2]" /> 

當你發佈到這個控制器,你應該看到所有的動態數據已經填滿你的數組。您可以在密鑰到達時處理密鑰。

+0

我們可以使用JSON數據發佈方法嗎? – Sukhjeevan

+0

我可以發送動態添加的值列表,但如何將這些值與他們的ID映射到數據庫表中,因爲我只發送值而不是每個值的id。 即如何確定我要更新數據庫表中正確的行? – Sukhjeevan

+0

我試過這個,但是當我動態添加texbox併發布到控制器操作時,我只獲得一個值,而不是我動態添加的其他值 – Sukhjeevan

0

如果用戶可以通過動態地添加Detail1Detail2Comment,它們定義爲模型,然後添加到動作像如下:

public class Detail1 { 
    public string Content {get; set;} 
} 

public class Detail2 { 
    public string Content {get; set;} 
} 

public class Comment { 
    public string Content {get; set;} 
} 

[HttpPost] 
public ActionResult Create(string EmpName, string EmpCode, List<Detail1> detail1s, List<Detail2> detail2s, List<Comment> comments) 
{ 
    //save operations... 
} 

,並查看:

@using (Html.BeginForm()) 
{ 
// other static fields.. 

<input type="button" value="Add Detail1" onclick="AddDetail1();" /> 
<input type="button" value="Add Detail2" onclick="AddDetail2();" /> 
<input type="button" value="Add Comment" onclick="AddComment();" /> 

<table id="LeftDetails1"> 
     <tr> 
      <td> 
       Detail 1 
      </td> 
     </tr> 
</table> 

<table id="RightDetails2"> 
     <tr> 
      <td> 
       Detail 2 
      </td> 
     </tr> 
</table> 

<table id="BottomComments"> 
     <tr> 
      <td> 
       Comments 
      </td> 
     </tr> 
</table> 
} 

<script type="text/javascript"> 
    function AddDetail1() { 
     var rowDetail1 = $('#LeftDetails1 tr').length; 
     var index = rowDetail1 + 1; 
     $('#LeftDetails1').append("<tr><td><input type='hidden' name='detail1s.Index' value='" + index + "' /><input type='text' name='detail1s[" + index + "].Content' /></td></tr>"); 
    } 

    function AddDetail2() { 
     var rowDetail2 = $('#RightDetails2 tr').length; 
     var index = rowDetail2 + 1; 
     $('#RightDetails2').append("<tr><td><input type='hidden' name='detail2s.Index' value='" + index + "' /><input type='text' name='detail2s[" + index + "].Content' /></td></tr>"); 
    } 

    function AddComment() { 
     var rowComment = $('#BottomComments tr').length; 
     var index = rowComment + 1; 
     $('#BottomComments').append("<tr><td><input type='hidden' name='comments.Index' value='" + index + "' /><input type='text' name='comments[" + index + "].Content' /></td></tr>"); 
    } 
</script> 

而且你可以給值EmpId到員工保存後的3個模型。首先保存員工,然後你會得到它的Id,然後給012h,Detail2Comment模型並重新保存的值。

希望這會奏效。