简体   繁体   中英

asp.net mvc actionlink difficulties

i have an actionlink in my view

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

the action has a [AcceptVerbs(HttpVerbs.Post)] atttribute, and the lactionlink doesn't work.

how to make it work by "POST"??

To post to an action I use this JavaScript function:

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();
}

It creates html form, so you don't have to create it in view code. this way you can use:

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

an ActionLink is just creates an anchor tag

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

This is inherently a GET verb. To do a POST, you must wrap the actionlink inside a form tag and you can override the click function with some 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>

Sorry mate, can't be done: take a look at the accepted reply here Does Html.ActionLink() post the form data? and read a bit about the tag here http://www.w3schools.com/TAGS/tag_a.asp

Another option with no JS is to use a submit button instead of a link. The button can be styled into anything with CSS.

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

The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM