VolleyBall Player
VolleyBall Player

Reputation: 710

Post a form mvc3

I have a link and search button. Clicking on search button posts the page to a predefined action. Now clicking on a link should post the page to another action and should post all the values hidden varible values to another action. Can it be done.

Upvotes: 0

Views: 143

Answers (2)

Prashanth Thurairatnam
Prashanth Thurairatnam

Reputation: 4361

You can't use @Html.ActionLink for HTTP POST (edited: unless you use javascript function to submit the form via specifying onClick HtmlAttribute) . You can use submit buttons instead and style them as hyperlinks using jQuery. In this case you should be able to post your model with whatever values.

Alternatively you can use @Ajax.ActionLink and specify AjaxOptions { HttpMethod = "POST" }

Upvotes: 1

Shyju
Shyju

Reputation: 218882

Typically A link will generate an anchor tag and it usually gives you an HTTP GET request. Not the post request. You can supply parameters in your link which will be accepted as the parameters of the action method

@Html.ActionLink("Search","Search","Items",new { @id="nokia" },null);

This will generate a link with a querystring key called id with value nokia.

../Items/Search/nokia

or

../Items/Search?id=nokia

And your action method with id parameter can handle this GET request

public ActionResult Search(string id)
{
  //Do whatever you want to do with the value in id. return a view with results
}

IF you really want to do an HTTPPost from a link, You can grab the click event of the link in the javascript and make an httppost call. The below script does that with jQuery library.

$(function(){

  $("a").click(function(e){
    e.preventDefault();
    $.post($(this).attr("href"),function(result){
      //do whatever with the results 
    });
  }); 

});

But make sure you have an HttpPost version of the ActionMethod in your controller to handle this request

[HttpPost]
public ActionResult Search(string id)
{
  //This is a POST request.Do whatever you want to do with the value in id. return a view with results
}

Upvotes: 4

Related Questions