Asp.net MVC ActionLink трудности - PullRequest
       8

Asp.net MVC ActionLink трудности

2 голосов
/ 16 февраля 2010

у меня есть actionlink на мой взгляд

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

у действия есть [AcceptVerbs(HttpVerbs.Post)] атрибут, и lactionlink не работает.

как заставить его работать "POST"«??

Ответы [ 4 ]

4 голосов
/ 16 февраля 2010

Чтобы опубликовать действие, я использую эту функцию 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 голосов
/ 16 февраля 2010

ActionLink просто создает якорный тег

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

Это по сути глагол GET. Чтобы сделать POST, вы должны обернуть ссылку действия внутри тега формы, и вы можете переопределить функцию 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>
2 голосов
/ 16 февраля 2010

Извините, приятель, не может быть сделано: посмотрите на принятый ответ здесь Публикует ли Html.ActionLink () данные формы? и прочитал немного о теге здесь http://www.w3schools.com/TAGS/tag_a.asp

0 голосов
/ 16 февраля 2010

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

<%using (Html.BeginForm("action", "controller") {%>
  <button type="submit">text</button>
<%}%>
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...