我有一个链接和搜索按钮。单击搜索按钮会将页面发布到预定义的操作。现在单击链接应该将页面发布到另一个操作,并且应该将所有隐藏变量值的值发布到另一个操作。能不能做到。
问问题
140 次
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 回答