2012-05-13 63 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)。發佈編輯 –