怎么点击删除链接后删除从我的Razor视图对象
问题描述:
我有我的asp.net MVC中的以下观点: -怎么点击删除链接后删除从我的Razor视图对象
@foreach (var item in Model) {
<tr >
<td>
@Html.DisplayFor(modelItem => item.UserID)
<td id ="userclass">
@Ajax.ActionLink("Add User to Class",
"Register", "User",
new { id = item.UserID, classid = ViewBag.id },
new AjaxOptions {
InsertionMode = InsertionMode.InsertAfter,
HttpMethod = "POST",
UpdateTargetId = "incrementadd",
LoadingElementId = "progressToadd",
OnSuccess = "removerow"
})
</td>
我需要删除的表行包含的对象加入;我试图定义onsuccess"removerow"
与下面的脚本上述AJAX链接里面,但它没有工作: -
function removerow() {
jAlert('The Answer was added succsfully', 'Add Confirmation');
var self = this;
$(self).remove();
});}
所以我怎么能做到这一点? BR
答
由于您正在讨论删除某行并向我们显示关于添加类的代码,因此您的问题有点奇怪。然后你谈谈一个removerow
回调。事情在你的问题中并没有真正相关。但无论如何,两种可能性浮现在脑海:
- 有您正在使用AJAX调用删除的答案返回包含表的局部视图,然后替换与此部分的成功回调表中的控制器动作。
- 在客户端上的成功回调
第一种方法的缺点是,你需要执行额外的SQL查询来重新获取,允许您最初生成表,但可以确保数据集中删除相应的行你会得到正确的数据。使用第二种方法,如果您只使用javascript删除相应的行,则可能有其他用户在同一时间删除了其他行,并且您将无法获得数据的正确表示。
所以在第一种方法你外部化表到部分:
<div id="incrementadd">
@Html.Partial("_Table", Model.Answers)
</div>
,然后在你的删除操作:
[HttpPost]
public ActionResult Delete(int id)
{
1. Delete the record with the given id in your database
2. Refetch all the answers and pass them to the partial
return PartialView("_Table", answers);
}
在第二种方法中,你必须传递给成功回调的要删除的表格的当前行。为此,您可以将其分配一个唯一ID <tr>
元素:
@foreach (var item in Model)
{
<tr id="[email protected]">
<td>
@Html.DisplayFor(modelItem => item.UserID)
</td>
<td id ="userclass">
@Ajax.ActionLink(
"Delete answer",
"Delete",
"Answers",
new {
id = item.ID,
},
new AjaxOptions {
HttpMethod = "POST",
OnSuccess = string.Format(
"deleteSuccess({0})",
Json.Encode(item.ID)
),
LoadingElementId = "progressToadd"
}
)
</td>
</tr>
}
和deleteSuccess
:
var deleteSuccess = function(rowid) {
$('#row' + rowid).remove();
};
遗憾的不一致,我已经编辑我的问题,包括正确的代码。我想要做的是删除添加的对象,而不是删除。 – 2012-03-13 14:08:32
它工作正常;但是当我为表格行定义ID时,我应该使用@row吗?因为我尝试了下面的
它们之间有什么区别?这将取决于这些ID的格式。如果它们是数字,如果使用'id =“123”',那么您将获得无效的HTML,因为ID不能以数字开头,而ID =“row123”可确保您获得有效的HTML。 – 2012-03-13 18:58:55
相关问题