0

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

4

2 回答 2

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 中获取链接的点击事件并进行 httppost 调用。下面的脚本使用 jQuery 库执行此操作。

$(function(){

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

});

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

[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
}
于 2012-05-13T02:25:13.473 回答
1

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

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

于 2012-05-13T02:35:52.340 回答