我必须使用ASP.NET MVC 4中的模型对话框实现创建/编辑功能,使用Entity Framework数据库第一种方法,如下图所示:
我在网上搜索解决方案时已经阅读了以下文章。
它与我想要的非常相似,但唯一的区别是在我的情况下,Emp名称和Emp代码是静态的,但用户可以在字段1 中在客户端动态添加行,字段2 和评论部分,因此在这种情况下如何保存(创建/编辑)数据(由用户动态添加)到数据库中。
tblEmployee - >此表包含EmpID,Emp名称和Emp代码列
tblTable1 - >此表具有ID(主键),EmpID(外键),Detail1
tblTable2 - >此表具有ID(主键),EmpID(外键),Detail2
我是否必须使用json / ajax方法或您建议的其他方法。
谢谢
答案 0 :(得分:0)
在您的控制器参数中,将动态属性设置为数组。
在客户端添加新行时,将控件命名为与参数名称相同的名称。即:
<input type="text" name="Detail1[0]" />
<input type="text" name="Detail1[1]" />
<input type="text" name="Detail1[2]" />
当您发布到此控制器时,您应该看到所有动态数据已填满您的阵列。你可以在到达那里时处理密钥。
答案 1 :(得分:0)
如果用户可以动态添加Detail1
,Detail2
和Comment
,请将其定义为模型,然后添加到以下操作中:
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>
您可以在员工保存后为3个模型提供EmpId
的价值。首先保存员工,然后你会得到它Id
,然后给Detail1
,Detail2
和Comment
模型提供价值并再次保存。
希望,这会奏效。