我的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;更改集合的操作。我怎样才能做到这一点?谢谢!
更新
答案 0 :(得分:0)
如果您希望使用它。您可以使用提交按钮提交表单并传入ID以删除,然后相应地调用控制器操作和代码。