如何正确地将与jQuery ListView行相关的对象传递给特定的控制器方法
本文关键字:对象 方法 控制器 正确地 jQuery ListView | 更新日期: 2023-09-27 18:09:04
我有一个jQuery视图,显示一个列表的Fix
对象,这一个:
<ul data-role="listview" data-inset="true" data-theme="b" data-split-icon="delete">
@foreach (DataModel.Vulnerability.Fix item in Model.VulnerabilityFixes)
{
<li><a href="@Url.Action("Details", "Product", new { Title = item.Title })">
<h2>@item.Title</h2>
<table style="width: 100%">
<tr>
<th>Id</th>
<th>FixName</th>
<th>Vendor</th>
<th>Version</th>
</tr>
<tr>
<td>@MyHelper.decodeNull(item.Id)</td>
<td>@MyHelper.decodeNull(item.FixName)</td>
<td>@MyHelper.decodeNull(item.Vendor)</td>
<td>@MyHelper.decodeNull(item.Version)</td>
</tr>
</table>
</a>
<a href="@Url.Action("DeleteFix", "Editing", new { vulnId = Model.Id, currentFix = item })">Delete</a>
</li>
}
</ul>
如您所见,这个列表包含一个按钮(一个链接)来删除相关的修复,这个:
<a href="@Url.Action("DeleteFix", "Editing", new { vulnId = Model.Id, currentFix = item })">Delete</a>
当这个链接被点击时,调用EditingController类的DeleteFix()方法,它接受2个参数:
vulnId
即long
值点击链接行对应的
Fix
对象。
这是我的DeleteFix()
方法
public ActionResult DeleteFix(long vulnId, DataModel.Vulnerability.Fix currentFix)
{
DataModel.Vulnerability.Fix model = new DataModel.Vulnerability.Fix();
manager.openConnection();
try
{
model = currentFix;
}
finally
{
manager.closeConnection();
}
return View(model);
}
问题是当进入方法时,vulnId
参数设置正确,但currentFix
参数设置为null
。
我错过了什么?我能做些什么来正确传递与我按下删除按钮的行相关的Fix
对象?
不能在URL中传递"object"。你只能传递文本。(尽管您可以序列化对象)。您可能想要传递项目的Id。因此,链接应该是这样的:
<a href="@Url.Action("DeleteFix", "Editing", new { vulnId = Model.Id, currentFix = item.Id })">Delete</a>
你的动作应该是:
public ActionResult DeleteFix(long vulnId, int currentFix)
然后您可以使用Id来删除项目。