2011-06-08 106 views
84

在上市控制器我有,Url.Action參數?

public ActionResult GetByList(string name, string contact) 
{   
    var NameCollection = Service.GetByName(name);  
    var ContactCollection = Service.GetByContact(contact);   
    return View(new ListViewModel(NameCollection ,ContactCollection)); 
} 

在ASPX頁面我打電話,

<a href="<%:Url.Action("GetByList","Listing" , new {name= "John"} , new {contact="calgary, vancouver"})%>"><span>People</span></a> 

我有一個問題在ASPX代碼...我可以拉動記錄的名字John。但是當我給聯繫人=「卡爾加里,溫哥華」時,網頁出現錯誤。

如何在Url.Action中調用兩個參數。我嘗試了下面的內容,但這看起來不對。

<a href="<%:Url.Action("GetByList","Listing" , new {name= "John" , contact= " calgary, vancouver" })%>"><span>People</span></a> 

回答

147

下面是正確的過載(在你的榜樣,你是缺少一個右}routeValues匿名對象,以便您的代碼將拋出一個異常):

<a href="<%: Url.Action("GetByList", "Listing", new { name = "John", contact = "calgary, vancouver" }) %>"> 
    <span>People</span> 
</a> 

假設你使用的是默認路線本應產生以下標記:

<a href="/Listing/GetByList?name=John&amp;contact=calgary%2C%20vancouver"> 
    <span>People</span> 
</a> 

這將成功地調用GetByList控制器行動傳遞兩個參數:

public ActionResult GetByList(string name, string contact) 
{ 
    ... 
} 
+0

@ user787788,你得到了什麼問題?你是什​​麼意思*不接受兩個參數*?誰不接受?你是否收到錯誤信息?你的操縱員行動沒有受到打擊?你是否得到錯誤的價值觀?請明確點。 – 2011-06-08 12:43:03

+0

當我給出兩個參數,aspx頁面甚至沒有擊中控制器。它發現頁面本身的錯誤。我有一個defalut異常,叫做worng。 aspx去那裏 – user787788 2011-06-08 12:46:56

+0

@ user787788,有什麼錯誤?你正在收到的確切消息? – 2011-06-08 12:55:24

3

可以返回名爲HttpValueCollection私人收藏甚至是文件說,這是使用ParseQueryString實用程序的NameValueCollection。 然後手動添加密鑰,HttpValueCollection爲您執行編碼。 然後只是追加手動查詢字符串:

var qs = HttpUtility.ParseQueryString(""); 
qs.Add("name", "John") 
qs.Add("contact", "calgary"); 
qs.Add("contact", "vancouver") 

<a href="<%: Url.Action("GetByList", "Listing")%>?<%:qs%>"> 
    <span>People</span> 
</a>