Javascript 使用jquery加载并插入ASP.NET局部视图

Javascript 使用jquery加载并插入ASP.NET局部视图,javascript,jquery,asp.net,asp.net-mvc-3,partial-views,Javascript,Jquery,Asp.net,Asp.net Mvc 3,Partial Views,我有一个表行的局部视图。表中的每一行描述一个元素。元素可以有子元素,但如果是子元素,则不能有自己的子元素。在表中,每个父元素都有一行,它的所有子元素都有一个列表。我正在努力在他们可以点击的子元素旁边建立一个链接,它将不再是子元素。因此,需要将其从列表中删除,并在刚刚从中取出的父元素下向表中添加一行。我有以下javascript函数,可以正确地更新数据库中的元素,使其不再具有父元素,并将其从列表中删除 function removeElementFromParent(id, parenti

我有一个表行的局部视图。表中的每一行描述一个元素。元素可以有子元素,但如果是子元素,则不能有自己的子元素。在表中,每个父元素都有一行,它的所有子元素都有一个列表。我正在努力在他们可以点击的子元素旁边建立一个链接,它将不再是子元素。因此,需要将其从列表中删除,并在刚刚从中取出的父元素下向表中添加一行。我有以下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);
$('').insertAfter('#'+parentid);
$('#'+id).load('@Url.Action(“ElementRow”)'+'?elementid='+id);

如果您想将javascript变量与Url.Action一起使用,那么您应该编写如下代码

$('@Url.Action("~/Pack/ElementRow")' + "?elementid=" + id).insertAfter('#' + parentid);

希望这能解决您的问题。

您可以尝试编写实际的url,而不使用帮助程序。如果是
post
请求,您可以在{data:id}参数中写入参数,如果是
get
u可以写入类似于:{url:'//'+id}的内容。还有一些方法可以将部分视图作为字符串返回,并将其解析为Json。我想你可以在这里找到答案: