2013-04-09 55 views
2
public enum Employee 
    { 
     FT, 
     PT, 
    } 

這不起作用自定義枚舉作爲可選參數

public ActionResult Index(Employee s = Employee.PT) 
     { 
      ViewData["Message"] = s.ToString(); 

      return View("MyView"); 
     } 

異常詳細信息:System.ArgumentException:參數字典 包含參數「S」的方法 「系統的無效項.Web.Mvc.ActionResult 索引(SampleControllerEx.Controllers.Employee)'in 'SampleControllerEx.Controllers.HomeController'。字典 包含類型'System.Int32'的值,但該參數需要類型爲'SampleControllerEx.Controllers.Employee'的 值。參數 名稱:參數

但低於一個作品,

public ActionResult Index([DefaultValue(Employee.PT)] Employee s) 
     { 
      ViewData["Message"] = s.ToString(); 

      return View("MyView"); 
     } 

能告訴我爲什麼「默認值」只支持自定義枚舉,其中可選參數(4.0)不支持呢?

+0

聽起來像是你的路由是錯誤的。 – leppie 2013-04-09 06:26:02

+0

@leppie DefaultValue使用相同的路由。爲什麼不能.net 4.0選項正常工作? – 2013-04-09 06:32:08

+0

使參數爲空可能更容易。如果你要解決的參數可以使用'if((s ?? Employee.PT)== Employee.PT){//一些代碼}' – Silvermind 2013-04-09 09:01:28

回答

1

你可以做到這一點在這樣的方式:

public ActionResult Index(int employeeType) 
     { 
      Employee s = (Employee) employeeType; 
      ViewData["Message"] = s.ToString(); 

      return View("MyView"); 
     }