2014-03-29 27 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模型并重新保存的值。

希望这会奏效。