2013-02-20 46 views
0

我正在用名爲「Event」的屬性的下拉菜單創建表單。不幸的是,這是一個保留字,所以它不會像往常一樣工作:更改Html.DropDownListFor的名稱 - MVC Razor

@Html.DropDownListFor(x => x.Event, new SelectList(ViewData["Events"] as IEnumerable<JFS.Data.Model.Event>, "Id", "Name")) 

在控制器,因爲它是一個保留字,我不能單獨拿這個值,所以如果我這樣做:

public ActionResult Create(int event) 
{ 
etc etc 
} 

它引發錯誤。

我會非常喜歡做的是改變的下拉列表中,像這樣的東西的名稱:

@Html.DropDownListFor(x => x.Event as eventId, new SelectList(ViewData["Events"] as IEnumerable<JFS.Data.Model.Event>, "Id", "Name")) 

但是,這並不工作。任何人都知道更改名稱的正確方法? :-)

回答

2

您不能更改由HTML助手生成的名稱,這是設計。你可以做的反而是改變你的操作參數的名稱和@它允許使用保留字在C#中的變量名前綴它:

public ActionResult Create(int @event) 
{ 
    etc etc 
} 

但一般不建議使用保留字作爲變量名稱,除非絕對必要。而在你的情況不是絕對必要的,因爲有一個更好的解決方案,這當然包括使用視圖模型:

public class CreateEventViewModel 
{ 
    public int Event { get; set; } 
} 

,然後讓你的控制器動作持這種觀點模型參數:

public ActionResult Create(CreateEventViewModel model) 
{ 
    etc etc 
} 
+0

爲什麼要加前綴? – IamStalker 2013-02-20 09:56:17

+0

完美 - 救星!非常感謝你 – 2013-02-20 09:56:37

+0

Ohhhh你看到Darin你需要一個小方向:D – IamStalker 2013-02-20 09:57:37