2016-12-06 20 views
0

我爲我的控制器創建了一個自定義路由,但是當我在url中傳遞參數時,我無法獲取控制器類中的變量,輸出爲空。我不能在MVC中獲取參數5

路線

routes.MapRoute(
      "Employee", "Employee/{name}", new 
      {controller = "Employee", action = "Search", name = UrlParameter.Optional} 
); 

類EmployeeController

public ActionResult Search(string name) 
    { 
     var input = Server.HtmlEncode(name); 
     return Content(input); 
    } 
+0

向我們展示您如何調用此方法。 – Amy

+0

調用'rootURL/Employee/george'(輸出''「george」'') – trashr0x

+1

可以提供文件中提到的所有路由嗎? –

回答

3

首先,您的自定義路線需要之前來默認的,因此首先匹配:

routes.MapRoute(
    name: "Employee", 
    url: "Employee/{name}", 
    defaults: new { controller = "Employee", action = "Search", name = UrlParameter.Optional } 
); 

routes.MapRoute(
    name: "Default", 
    url: "{controller}/{action}/{id}", 
    defaults: new { controller = "Home", action = "Index", id = UrlParameter.Optional } 
); 

既然你將路由URL定義爲"Employee/{name}",並具有EmployeeController一個public ActionResult Search(string name)行動簽名,你應該能夠使用以下格式匹配:

  • /Employee/George
  • /Employee?name=George

都返回"George"

+0

嗯,我讀過,謝謝,現在可以工作。 –

+0

不客氣。如果這回答了您的問題,您可以點擊答案旁邊的複選標記將其標記爲已接受。 – trashr0x