Динамические формы и AntiForgeryToken MVC - PullRequest
2 голосов
/ 04 мая 2010

Я хочу создать динамические формы на странице 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 на чем-то похожем выше?!? любая помощь будет оценена

1 Ответ

2 голосов
/ 17 октября 2010

Кажется, что вы вызываете динамические формы на самом деле является попыткой преобразовать якорные ссылки в формы, чтобы вы могли 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" />
<% } %>
...