2 回答

TA貢獻(xiàn)1851條經(jīng)驗(yàn) 獲得超4個(gè)贊
@Url.Content是一個(gè) Razor 插值指令,只會(huì)在 Razor 視圖或頁(yè)面文件 ( .cshtml) 中被解析。沒有其他東西通過(guò) Razor 視圖引擎,因此不能期望它在 CSHTML 文件以外的任何文件中工作。
有幾種方法可以在頁(yè)面加載時(shí)將服務(wù)器端數(shù)據(jù)傳遞給 JavaScript 文件——比 StackOverflow 答案中涵蓋的更多。對(duì)于您的特定情況,您似乎只需要將 URL 根傳遞給腳本,以便它可以調(diào)用端點(diǎn)。如果可能的話,通常最好在服務(wù)器端完全呈現(xiàn)操作 URL,而不是在客戶端構(gòu)建它們。為此,您可以使用以下方法之一。
1. 從引用這個(gè)文件的視圖中提供一個(gè)全局變量
SomeView.cshtml
<script>
window.Routes = {
getMeters: '@Url.Action("GetMeters", "Meters")', // the GetMeters action on MetersController
// add other routes here
};
</script>
<script src="@Url.Content("~/somescript.js")"></script>
一些腳本.js
$(document).ready(function() {
var url = Routes.getMeters;
// ...
});
2.讓腳本公開一個(gè)函數(shù)并從視圖中調(diào)用它
一些腳本.js
// This function replaces $(document).ready(...)
function initialize(getMetersRoute) {
var url = getMetersRoute;
// ...
}
SomeView.cshtml
<script src="@Url.Content("~/somescript.js")"></script>
<script>
$(document).ready(function() {
initialize('@Url.Action("GetMeters", "Meters")');
});
</script>

TA貢獻(xiàn)1852條經(jīng)驗(yàn) 獲得超7個(gè)贊
一種解決方案是在布局 cshtml 文件中創(chuàng)建一個(gè)包含您的 url 的變量,該文件在您使用 javascript 文件的任何地方使用,然后您可以簡(jiǎn)單地在 JS 文件中調(diào)用此變量。
例子 :
websiteUrl = '@Url.Content("~/")';
您只需要使用 websiteUrl。
- 2 回答
- 0 關(guān)注
- 304 瀏覽
添加回答
舉報(bào)