2

我想在 MVC 页面上创建将生成类似这样的动态表单。

onclick="
    var f = document.createElement('form'); 
    f.style.display = 'none'; 
    this.parentNode.appendChild(f); 
    f.method = 'POST'; 
    f.action = this.href;
    var s = document.createElement('input'); 
    s.setAttribute('type', 'hidden');
    s.setAttribute('name', 'authenticity_token'); 
    s.setAttribute('value', '6I6td2wJRI9Nu5Au/F3EfOQhxJbEMXabuVXM0nXonkY=');
    f.appendChild(s);
    f.submit();
    return false;"

我只是不确定如何在上面的东西上实现 AntiForgeryToken?!?任何帮助,将不胜感激

4

1 回答 1

2

看来您正在调用动态表单实际上是将锚链接转换为表单的努力,以便您可以 POST 而不是 GET。在这种情况下,我建议您直接在服务器上生成表单,而不必费心发出链接,稍后您将在onclick事件中使用所有这些 javascript 将其转换为表单:

所以而不是:

<%= Html.ActionLink("OK", "controller", "action", null, 
    new { onclick = "Some ugly javascript" })%>

你可以直接:

<% using (Html.BeginForm("controller", "action")) { %>
    <%= Html.AntiForgeryToken() %>
    <input type="submit" value="OK" />
<% } %>
于 2010-10-17T18:46:48.050 回答