簡體   English   中英

MVC相當於@ Html.ActionLink通過javascript

[英]MVC equivalent of @Html.ActionLink through javascript

如何通過javascript代碼編寫等效的@ Html.ActionLink,即調用MVC操作,然后創建一個新視圖而不返回調用視圖?

javascript是一種客戶端語言,它對您使用的服務器端語言一無所知。 因此,使用服務器端路由定義生成URL的服務器端幫助程序的javascript中沒有等效項是正常的。

目前還不是很清楚你想要實現什么,但是如果你想通過javascript使用調用一些url,你可以使用服務器端助手生成這個url:

<script type="text/javascript">
    var url = '@Url.Action("SomeAction", "SomeController")';
    // do something with the url client side variable, for example redirect
    window.location.href = url;
</script>

如果你想在一個單獨的javascript文件中使用這個url,你無法訪問服務器端助手,你仍然可以根據情況在一些DOM元素中包含這個url。

例如:

<div id="foo" data-url="@Url.Action("SomeAction", "SomeController")">Click me</div>

請注意我們嵌入到DOM中的data-url HTML5屬性,並使用服務器端幫助程序來確保生成的URL始終基於我們的路由定義是正確的。 現在我們可以在一個單獨的javascript文件中不引人注意地訂閱此div的click事件並檢索url:

$('#foo').click(function() {
    var url = $(this).data('url');
    // do something with the url client side variable, for example redirect
    window.location.href = url;
});

其他示例顯然包括應使用服務器端HTML幫助程序生成的標准<a><form>元素,然后您在單獨的javascript文件中所要做的就是獲取其相應的hrefaction屬性以檢索實際的URL和用它做點什么。

另一種選擇是將URL存儲在頁面某處隱藏的<div> ,稍后通過Javascript調用它。 它看起來像這樣:

Index.cshtml

<div style="display: none;" id="url">
   @Url.Action("SomeAction", "SomeController")
</div>

然后,您可以在Script.js文件中使用它來構建您想要的任何鏈接。

var url = $("#url").text();

然后,URL變量將包含指向/SomeController/SomeAction的網絡安全鏈接。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM