2012-05-13 103 views
0

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

回答

4

通常,一个链接将生成一个锚标签,它通常会给你一个HTTP GET请求。不是发布请求。你可以提供你的链接参数将被接纳为action方法

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

这会产生一个名为ID与价值诺基亚查询字符串键链接的参数。如果你真的想从一个链接做一个HTTPPost

../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 
} 

,您可以抢点击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 
} 
1

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

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

+1

这不是真的。您可以使用链接发布信息,但您必须使用javascript通过onclick处理程序进行提交。 –

+2

@MystereMan是的,这是正确的(我的意思是没有直接使用JavaScript)。发布编辑 –