【发布时间】:2012-06-21 18:09:22
【问题描述】:
我有一个表格行的部分视图。表中的每一行描述一个元素。一个元素可以有子元素,但如果它是一个子元素,它就不能有它自己的子元素。在表中,每个父元素都有一行,以及所有子元素的列表。我正在努力在他们可以单击的子元素旁边添加一个链接,它将不再是一个子元素。所以它需要从列表中删除,并在你刚刚取出它的父元素下的表中添加一行。我有以下 javascript 函数可以正确更新数据库中的元素以不再有父元素并将其从列表中删除。
function removeElementFromParent(id, parentid) {
if (confirm("Are you sure you want to remove this element from the group?")) {
$.post('@Url.Content("~/Pack/RemoveElementFromParent")', { "elementid": id });
$('#' + id).remove();
}
}
要创建行并插入它,我尝试这样做:
$('@Url.Action("~/Pack/ElementRow", new { elementid = id })').insertAfter('#' + parentid);
但这不起作用,因为您不能在@Url.Action(...) 中使用javascript 变量id。我已经使用$('#id').load(@Url.Action(...)); 来根据请求加载数据。我尝试做类似的事情,但由于我们没有明确的加载位置,因此在这种情况下不会起作用。此外,您仍然无法使用 javascript 变量。
如果有更好的方法,我们将不胜感激
编辑
这是我的解决方案:
$('<tr id="' + id + '"></tr>').insertAfter('#' + parentid);
$('#' + id).load('@Url.Action("ElementRow")' + '?elementid=' + id);
【问题讨论】:
-
您可以尝试编写实际的 url,而不是使用帮助程序。如果是
post请求,你可以在{data:id}参数中写参数,如果是get你可以写类似:{url:'// /'+id} .并且有一些方法可以将部分视图作为要解析为 Json 的字符串返回。我想你可以在这里找到答案:stackoverflow.com/questions/483091/render-a-view-as-a-string
标签: javascript jquery asp.net asp.net-mvc-3 partial-views