我有一个链接和搜索按钮。单击搜索按钮将页面发布到预定义的操作。现在单击链接应该将页面发布到另一个操作,并且应该将隐藏的可变值的所有值发布到另一个操作。可以吗?
答案 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" }