如何在asp.net mvc 4模型对话框中发布用户动态添加的数据

时间:2014-03-29 18:36:25

标签: jquery asp.net entity-framework asp.net-mvc-4

我必须使用ASP.NET MVC 4中的模型对话框实现创建/编辑功能,使用Entity Framework数据库第一种方法,如下图所示:

enter image description here

我在网上搜索解决方案时已经阅读了以下文章。

CLICK HERE TO BROWSE

它与我想要的非常相似,但唯一的区别是在我的情况下,Emp名称和Emp代码是静态的,但用户可以在字段1 中在客户端动态添加行,字段2 评论部分,因此在这种情况下如何保存(创建/编辑)数据(由用户动态添加)到数据库中。

tblEmployee - >此表包含EmpID,Emp名称和Emp代码列

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

tblTable2 - >此表具有ID(主键),EmpID(外键),Detail2

我是否必须使用json / ajax方法或您建议的其他方法。

谢谢

2 个答案:

答案 0 :(得分:0)

在您的控制器参数中,将动态属性设置为数组。

在客户端添加新行时,将控件命名为与参数名称相同的名称。即:

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

当您发布到此控制器时,您应该看到所有动态数据已填满您的阵列。你可以在到达那里时处理密钥。

答案 1 :(得分: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>

您可以在员工保存后为3个模型提供EmpId的价值。首先保存员工,然后你会得到它Id,然后给Detail1Detail2Comment模型提供价值并再次保存。

希望,这会奏效。