MVC4添加/从嵌套集合删除(与jQuery?)(MVC4 adding/deleting from

2019-10-17 17:59发布

我想学ASP.net MVC与web表单的长时间运行之后,所以道歉,如果我是令人困惑的事情。 我无法超越了简单的编辑页每模型结构。 我公司员工,谁是xrefed到项目,我想编辑这一切都在一个页面上。

我有一个雇员的模型:

public class Employee
{
    public string UserID { get; set; }
    public string FirstName { get; set; }
    public string LastName { get; set; }
    public List<ProjectXref> Projects { get; set; }
}

这是我的ProjectXref模型:

public class ProjectXref
{
    public Project Project { get; set; }
    public string Role { get; set; }
}

我创建了一个编辑模板的ProjectXref:

@model Relationships.Models.ProjectXref

<tr>
    <td><span class="h3"> @Model.Project.ProjectName </span> </td>
    <td>@Html.EditorFor(model => model.Role)</td>
    <td>
        @Html.HiddenFor(model => model.Project.ProjectKey)
        <a class="btnDel" > </a>
    </td>
</tr>

......在我的员工编辑的看法,我只是用EditorFor呈现TR行对我的员工与相关联的每个项目。

@Html.EditorFor(model => model.Projects)

我坚持用现在给做这些。 我开始了一些jQuery的删除了我的ProjectXref:

$(".btnDel").live("click", function () {
    $(this).parents('tr').remove();
    return false;
});

这看起来不错,但如果我删除的第一个项目,然后提交,无以下项目在我的帖子出现。 我认为这与任何魔法结合是怎么回事做; 我的“Projects_0__Title”现场丢失,所以MVC跳过试图绑定别的。

我的目标:我想修改我的项目名单我的网页上动态,这意味着删除项目的能力,增加新的项目,或编辑项目(改变雇员相对于项目中的作用)。 我错在试图让MVC做到这一点? 随着我见过的教程,最希望你编辑和添加新的ProjectXrefs每一个单独的页面,但是,似乎是坏的UI。

在我的脑海里,我希望能够为新ProjectXref编辑HTML代码添加到我的形式,当形式发布,有ASP.net将其识别为一个新的ProjectXref并绑定它是这样。 与此同时,如果我删除了关联到我现有的ProjectXref领域,我希望ASP.net认识到,我ProjectXrefs的一个领域,现在不见了,因此删除ProjectXref。 我要去打倒EditorTemplates在错误的道路?

编辑:我的解决办法

由于@Parv夏尔马,我结束了创建一个新的属性上我的课:

public string ProjectsJson
{
    get { return JsonConvert.SerializeObject(Projects); }
    set { Projects = JsonConvert.DeserializeObject<List<ProjectXref>>(value); }
}

然后我把它加入到我作为一个隐藏的看法:

@Html.HiddenFor(model => model.ProjectsJson)

然后我用AngularJS(必须学会一个反正)从我场阅读JSON在我的UI呈现它。

Answer 1:

我实现了这个方式是保持一个隐藏字段一个跟踪被添加或删除,是集合的一部分字段。
这只要您在集合中删除元素的方式,你只需要更新JSON,当它被调回读取JSON并相应更新集合
序列化或反序列化JSON ,你可以使用内置的JavaScriptSerializernewtonsoft.json



文章来源: MVC4 adding/deleting from nested collections (with jQuery?)