asp.net mvc actionlink困难

时间:2010-02-16 00:06:56

标签: .net asp.net asp.net-mvc

我在视图中有一个actionlink

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

该操作具有[AcceptVerbs(HttpVerbs.Post)] atttribute,并且lactionlink不起作用。

如何通过“POST”使其工作?

4 个答案:

答案 0 :(得分: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>

答案 1 :(得分:3)

ActionLink只是创建一个锚标记

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

这本质上是一个GET动词。要执行POST,您必须将actionlink包装在表单标记内,并且可以使用某些jQuery覆盖click函数。

<% 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 :(得分:2)

对不起伙伴,无法完成:请在Does Html.ActionLink() post the form data?查看已接受的回复,并在此处阅读有关此标记的信息http://www.w3schools.com/TAGS/tag_a.asp

答案 3 :(得分:0)

没有JS的另一个选择是使用提交按钮而不是链接。可以使用CSS将按钮设置为任何样式。

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