2015-04-19 35 views
0

我有以下代碼:如何在mvc中的ajax動作鏈接中包含AntiForgeryToken?

@Ajax.ActionLink("Delete", "Delete", 
new { id = item.ID, RequestVerificationToken=*What comes here?*}, 
new AjaxOptions { HttpMethod = "POST", UpdateTargetId = "formsIndex" }) 

我想驗證令牌添加到鏈接,使其無需客戶端使用JavaScript,這似乎是一個多餘的扶養,因爲我已經擁有的服務器值。有沒有適當的方法來做到這一點?

+3

創建一個窗體('Ajax.BeginForm()')和包括'@ Html.AntiForgeryToken()' –

回答

3

MSDN documentation(我的重點)

HtmlHelper.AntiForgeryToken方法

生成一個隱藏的表單字段的形式提交時被驗證(防僞標記)。

您需要一個表單元素來生成防僞標記。

@Ajax.BeginForm("Delete", new { id = item.ID }, new AjaxOptions { UpdateTargetId = "formsIndex" })) 
{ 
    @Html.AntiForgeryToken() 
    <input type="submit" value="Delete" /> // style to look like a link if that's what you want 
} 
+0

感謝。它按預期工作,儘管我希望能有更好的解決方案。當創建AntiForgeryToken hiddin字段時,視圖引擎訪問令牌值,似乎應該有一種方法來訪問它,而不需要在其周圍輸入元素 –

+0

最終,我解析了輸入元素並提取了令牌,但僅僅意識到無法發佈消息,這意味着通過操作鏈接傳遞數據的唯一方式是,無論其獲取或發佈的URL參數是否與AntiForgeryToken一起使用。這意味着沒有更好的選擇。 –

相關問題