2012-02-17 84 views
2

我有這個簡單的JavaScript代碼:從JavaScript發送字符串參數控制器(MVC3)(沒有AJAX)

var value = "I love programming"; 
window.location="Controller/Action/"+value; 

在控制器頁,我有這樣的:

public ActionResult(string value) { 
    // do something 
} 

問題來自控制器的參數是value。這總是空的。

爲什麼?

參數類型是否限制爲int? (不使用ajax)

我可以發送一個int到控制器,它正確處理信息。但不是字符串。

+1

這應該function window.location =「Controller/Action?value =」+ yourValue – 2012-02-17 11:00:17

回答

3

您可能需要設置一個路由在Global.asax中處理字符串參數,即:

RouteTable.Routes.MapRoute(
    "ValueRoute", 
    "{controller}/{action}/{value}", 
    new 
    { 
     controller = "Yourcontroller", 
     action = "Youraction", 
     value = UrlParameter.Optional 
    } 
); 

這頭的東西一切之上,所以它可能不會發生你。

[更新1],你在下面的評論說,改變從值的參數名稱=> ID 應該解決問題,而不訴諸addtional路線。

[更新2] - 你也可以,按照Sandeep的意見,選擇在網址名稱 - 值對,即window.location的= 「控制器/動作值=?」 + yourValue

+0

Doh!而不是'value',我應該使用'id'作爲字符串?我對嗎 ? – 2012-02-17 10:57:47

+0

邁克爾 - 是的,會做的伎倆!我假設你有一個使用'價值'參數的邊緣情況,因此'新'路線:) – 2012-02-17 10:59:40

+2

+1。 @MichaelSwan,如果你不想編輯路線;你可以使用名稱 - 值對來傳遞參數window.location =「Controller/Action?value =」+ yourValue – 2012-02-17 11:01:39