2010-02-16 2 views
2

я есть ActionLink на мой взглядASP.NET MVC трудности ActionLink

<%= Html.ActionLink("action","controller") %> 

действие имеет [AcceptVerbs(HttpVerbs.Post)] atttribute и lactionlink не работает.

как заставить его работать с помощью "POST" ??

+2

У вас есть POST через

. – mxmissile

ответ

4

Чтобы отправить сообщение в действии, я использую эту функцию JavaScript:

function postToUrl(path, params, method) 
{ 
    method = method || "post"; // Set method to post by default, if not specified. 

    // The rest of this code assumes you are not using a library. 
    // It can be made less wordy if you use one. 
    var form = document.createElement("form"); 
    form.setAttribute("method", method); 
    form.setAttribute("action", path); 

    for (var key in params) { 
     var hiddenField = document.createElement("input"); 
     hiddenField.setAttribute("type", "hidden"); 
     hiddenField.setAttribute("name", key); 
     hiddenField.setAttribute("value", params[key]); 

     form.appendChild(hiddenField); 
    } 

    document.body.appendChild(form); // Not entirely sure if this is necessary 
    form.submit(); 
} 

Это создает HTML-форму, так что вам не нужно создавать его просмотра кода. таким образом вы можете использовать:

<button onclick="postToUrl('/Controller/Action');">Link</button> 
3

ActionLink просто создает якорь тег

<a href="url">link text</a> 

Это по сути является GET-глаголом. Чтобы выполнить POST, вы должны обернуть actionlink внутри тега формы, и вы можете переопределить функцию click с помощью некоторого jQuery.

<% using (Html.BeginForm("action","controller")) 
     { %> 
    <%= Html.ActionLink("Link Text", "action","controller") %> 
<% } %> 

<script> 
    $(document).ready(function() { 

     $("a").click(function() { 
      $(this).parents('form').submit(); 
      return false; 
     }); 

    }); 
</script> 
+1

+1, но возможно ли, что вы хотите '$ (this) .closest ('form')' вместо '.parents'? – orip

0

Другой вариант без JS - использовать кнопку отправки вместо ссылки. Кнопка может быть написана во что угодно с CSS.

<%using (Html.BeginForm("action", "controller") {%> 
    <button type="submit">text</button> 
<%}%>