ASP.NET MVC删除动态创建的视图

时间:2015-06-23 12:21:38

标签: c# asp.net-mvc

我的ASP.NET MVC应用程序中有一个视图模型,它包含一个对象列表。使用EditorTemplate可视化每个对象。使用下拉列表我可以在回发时动态地将新对象添加到List。问题是当我尝试从列表中删除特定元素时。

public class MyViewModel
{
     public List<MyModel> Items { get; set; }

     public MyViewModel()
     {
          this.Items = new List<MyModel>();
     }
}

public class MyModel
{
    public int Id { get; set; }
    public string Text { get; set; } // I bind this to UI using EditorFor html helper
}

HomeController中:

[HttpPost]
public ActionResult Index(MyViewModel myViewModel)
{
     myViewModels.Items.Add(new MyModel());  // Simulate initializing the Id and Text properties

     return View(myViewModel);
}

然后在Index.cshtml中:

if (Model.Items != null)
{
    @Html.EditorFor(m => Model.Items);  // EditorTemplate is used here...
}

所以在我的名为Item.cshtml的模板文件中,我有:

@model MVCApp.Models.MyModel

<div>
    @Html.HiddenFor(m => m.Id)
    @Html.EditorFor(m => m.Text)

    <span class="deleteItem" data-item-id="@Model.Id">Delete</span>
</div>

现在,当我点击&#34;删除&#34;时,我不知道如何处理删除特定项目。我的目标是从控件中的集合中删除项目(&#39;视图模型的项目&#39;列表属性)。我可以使用jQuery删除div元素,但不会从&#39; Items&#39;中删除该属性。我希望避免使用jQuery来保持服务器端和客户端之间的数据完整性。我试图在HomeController中调用另一个名为Remove(int?id)的动作,其中id参数是&#39; MyModel&#39;的Id属性,但我需要传递&#39; MyViewModel&#39;删除操作中的对象以访问&#39;项目&#39;列表,删除元素,然后重定向到&#39;索引&#39;更改集合的操作。我怎样才能做到这一点?谢谢!

更新

enter image description here

1 个答案:

答案 0 :(得分:0)

如果您希望使用它。您可以使用提交按钮提交表单并传入ID以删除,然后相应地调用控制器操作和代码。