仅重新加载Div部分

时间:2015-04-23 15:54:58

标签: javascript html ajax asp.net-mvc razor

我不知道我想做什么是可能的,所以我会解释整个场景以及我试图以这种方式做的事情,如果有更好的方式,你们有光明的人可以让我知道!

这是场景,我有一个视图和一个PartialView。在PartialView中,我有一个下拉列表,可以通过View中的javascript填充。这工作正常,在PartialView中我有一个div,它调用Controller来根据传递给它的Model中的值返回结果。我需要的是基于Model和下拉列表中的值的结果。以下是基于模型值和硬编码loc的代码,这是我想从下拉列表中获得的。

<div id="catalogue-view-action-view-ct" class="async-partial" data-url='@Url.Content("~/Catalogue_Items/ItemsActionViewPartial/")@Model.CatalogueItemID?loc=6&AsyncUpdateID=catalogue-view'>
    @if (noJs)
    {
        <span>
            @{ Html.RenderAction("ItemsActionViewPartial", "Catalogue_Items", new { id = Model.CatalogueItemID, location = 6, AsyncUpdateID = "catalogue-view-action-view-ct" }); }
                </span>
    }
    else
    {
        <img src="@Url.Content("~/assets/images/busy.gif")" /><span> Loading...</span>
    }
</div>

PartialView中的这个div效果很好,在视图中我已经能够设置data-url属性没有问题,但是页面已经加载,因此它不会更新。有没有办法“刷新”或“重新加载”只是div而不是整个PartialView?如果我执行整个PartialView,我只是回到相同的情况,在javascript设置data-url属性之前加载html。以下是视图中的javascript:

var myDiv = document.getElementById('catalogue-view-action-view-ct');
            url = '~/Catalogue_Items/ItemsActionViewPartial/20144?loc=' + $('#LocationID').val() + '&AsyncUpdateID=catalogue-view-action-view-ct';
            myDiv.setAttribute('data-url', url);
            $('#catalogue-view-action-view-ct').load(url);

非常感谢任何帮助。

更新: 如上所述使用相对路径时,data-url已正确设置,但load路径不正确,因为它已被追加。这就是:

data-url="~/Catalogue_Items/ItemsActionViewPartial/20144?loc=40&AsyncUpdateID=catalogue-view-action-view-ct"

这很完美,正是我所需要的,但加载的路径是:

http://www.example.com/catalogue-items/20144/myItem~/Catalogue_Items/ItemsActionViewPartial/20144?loc=40&AsyncUpdateID=catalogue-view-action-view-ct

相对路径被添加到我当前位置的末尾,我可以修复此问题,除了我需要删除“/ myItem”部分,因为这是我不想在网址中查看的视图的参数。当我使用绝对路径时,我得到一个跨源错误。有什么建议吗?

1 个答案:

答案 0 :(得分:0)

在一些评论的帮助下,我找到了解决问题的方法! 使用$('#catalogue-view-action-view-ct').load(url);时,实际上不需要设置data-url。

但是为了使相对路径正常工作,我需要用url.content包围它,如下所示:

$('#catalogue-view-action-view-ct').load('@Url.Content("~/Catalogue_Items/ItemsActionViewPartial/")@Model.CatalogueItemID?loc=' + $('#LocationID').val() + '&AsyncUpdateID=catalogue-view-action-view-ct');

加载此值会产生所需的结果。谢谢@Lal带领我走向正确的方向!