Url.Content

时间:2015-04-22 13:13:47

标签: javascript razor

我有一个名为locid的javascript变量,我尝试将其用作URL的一部分,方法是设置div的data-url,如下所示:

data-url='@Url.Content("~/Catalogue_Items/ItemsActionViewPartial/")@Model.CatItemID?LocationID=locid&AsyncUpdateID=catalogue-view'>

我知道我不能像我在示例代码中那样将locid抛出到该字符串中,但我只是把它放在那里以说明我需要的javascript变量。我怎么能实现这个?

3 个答案:

答案 0 :(得分:3)

这里的问题是@ url.content需要在服务器上运行,其中JavaScript变量不可见。编写一个独立的AJAX调用来获取内容,而不是在data-url中设置内容

答案 1 :(得分:2)

您无法直接将Javascript变量用于属性。 解决方法可以是重新排序网址的参数并在脚本标记中设置JavaScript变量。

<button id="myButton" data-url='@Url.Content("~/Catalogue_Items/ItemsActionViewPartial/")@Model.CatItemID?AsyncUpdateID=catalogue-view'></button>

我在这里重新排序了url参数。 location参数将通过以下脚本设置。将此脚本放在按钮元素之后。

<script>
var button = document.getElementById('myButton');
var url=button.getAttribute('data-url');
url+="&LocationID=" + locid;
button.setAttribute('data-url',url);
</script>

答案 2 :(得分:0)

您可以使用document.write将值放在页面中,但是您无法在标记内写出来,您必须写出整个标记。例如:

<script>
document.write('<div data-url="@Url.Content("~/Catalogue_Items/ItemsActionViewPartial/")@Model.CatItemID?LocationID=' + locid + '&AsyncUpdateID=catalogue-view">');
</script>