2012-06-19 26 views
3

我有一个表的行的部分视图。表中的每一行都描述了一个元素。一个元素可以有子元素,但是如果它是一个子元素,它就不能拥有它自己的子元素。在表中,每个父元素都有一行,并且它的所有子元素都有一个列表。我正在努力在他们可以点击的子元素旁边有一个链接,它不再是一个孩子。所以它需要从列表中删除,并将一行添加到您刚刚从其中取出的父元素下的表中。我有以下javascript funciton正确更新数据库中的元素,不再有父级并将其从列表中删除。使用jquery加载和插入ASP.NET局部视图

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); 
+0

您可以尝试写入实际的网址,而不是使用助手。如果它是'post'请求,那么你可以在{data:id}参数中写入参数,如果它是'get'u可以写出如下内容:{url:'/ / /'+ id}。还有一些方法可以将部分视图作为一个字符串返回,并将其解析为Json。我想你可以在这里找到你的答案:http://stackoverflow.com/questions/483091/render-a-view-as-a-string –

回答

1

如果你想在Url.Action中使用javascript变量比你应该写这样的东西

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

希望这能解决您的问题。