2010-05-03 66 views
2

我想创建一个MVC页面上的动态表单,这将产生这样的东西。动态表单和AntiForgeryToken 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?!? 任何helpwould理解

回答

2

看来你在呼唤动态表单其实是在努力转换锚链接到表单中,这样就可以POST而不是GET。在这种情况下,我会建议您直接在服务器,而不是与发射的链接困扰,你以后会变成用这一切的javascript在onclick事件在窗体上生成表单:

所以不是:

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

你可以直接:

<% using (Html.BeginForm("controller", "action")) { %> 
    <%= Html.AntiForgeryToken() %> 
    <input type="submit" value="OK" /> 
<% } %>