童話的例行情況,我需要允許用戶從ASP.NET MVC應用程序中的Enum中選擇一個值。由於我使用的MVC版本5.2,我可以簡單地做到這一點:EnumDropDownListFor不選擇值,儘管值傳遞到視圖
// Model
public MyEnum EnumVal { get; set; }
// Controller
return View(new MyModel{EnumVal = MyEnum.SomeVal});
// View
@Html.EnumDropDownListFor(model => model.EnumVal)
而這一切都只是神奇的作品。我已經做了足夠多的時間來認爲它是理所當然的。
但我剛剛注意到,我傳遞的值並未被選爲當前下拉值。
我可以吐出模型的內容來驗證該值是否正確傳遞,但下拉菜單中只有第一個值被選中。
其他答案(例如here和here)似乎證實了我認爲我知道的事情:我不應該再做任何事情來讓下拉選擇我已經通過的值。
我有腦屁嗎?爲什麼這不起作用?
更新
下面是控制方法的更完整的列表:
public ActionResult Create(string enumVal)
{
var valueToPass = AccountsDestination.QbDUk;
Enum.TryParse(enumVal, out valueToPass);
return View(new QuickBooksMappingViewModel(){EnumVal = valueToPass});
}
你顯示的代碼工作正常。有沒有可能導致問題的任何JavaScript?我假設控制器方法是一個GET,並且您不想嘗試更改POST中的值,或者您沒有爲GET方法中的'enum'指定參數。 –
@StephenMuecke你釘了它!這是一個與獲得參數之一的名字衝突。重命名參數就是它所花費的。 (隨意將其升級爲答案,我將接受。) –
您尚未顯示相關代碼 - 方法的簽名:) –