发表一个表格mvc3

时间:2012-05-13 02:07:34

标签: asp.net-mvc-3 action

我有一个链接和搜索按钮。单击搜索按钮将页面发布到预定义的操作。现在单击链接应该将页面发布到另一个操作,并且应该将隐藏的可变值的所有值发布到另一个操作。可以吗?

2 个答案:

答案 0 :(得分:4)

通常,链接会生成一个锚标记,通常会为您提供 HTTP GET 请求。不是邮寄请求。您可以在链接中提供参数,这些参数将被接受为action方法的参数

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

这将生成一个带有名为id的查询字符串键的链接,其值为nokia。

../Items/Search/nokia

../Items/Search?id=nokia

使用id参数的操作方法可以处理此GET请求

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

如果你真的想从链接中做HTTPPost,你可以在javascript中抓取链接的click事件并进行httppost调用。下面的脚本使用jQuery库。

$(function(){

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

});

但请确保您的控制器中有一个HttpPost版本的ActionMethod来处理此请求

[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
}

答案 1 :(得分:1)

您不能将@Html.ActionLink用于HTTP POST(已编辑:,除非您使用javascript函数通过指定onClick HtmlAttribute来提交表单)。您可以使用提交按钮,并使用jQuery将它们设置为超链接。在这种情况下,您应该可以使用任何值发布模型。

或者,您可以使用@Ajax.ActionLink并指定AjaxOptions { HttpMethod = "POST" }