我開發了一個帶有durandal /微風的asp.net mvc解決方案。下拉列表中填充了enum(服務器端)提供的選項,Breeze
我有一個從Entity Framework Code First提供的Enum填充列表的下拉列表。這裏是模型服務器端:
public enum EnumCategory
{
Cat1,
Cat2,
Cat3,
Cat4
}
這裏是一個使用此枚舉表:
public class Transport
{
[Key]
public int Id { get; set; }
public EnumCategory Category { get; set; }
...
}
我的問題:如何檢索枚舉服務器端的這些值可以補我的下拉客戶端?我一定要創建一個新的陣列手動客戶端這樣的:
var categories = [
{ id: '' , description: '' },
{ id: 'Cat1', description: 'Category 1' },
{ id: 'Cat2', description: 'Category 2' },
{ id: 'Cat3', description: 'Category 3' },
{ id: 'Cat4', description: 'Category 4' }];
我的觀點顯示此下拉是這樣的:
<select data-bind="options: $root.categories,
optionsText: 'description',
optionsValue: 'id',
value: category,
validationOptions: { errorElementClass: 'input-validation-error' },
valueUpdate: 'afterkeydown'">
</select>
這似乎是多餘的我不得不重新創建值客戶端列表因爲我們已經有了這個值列表的服務器端。
有什麼想法?
謝謝。
您給我的示例具體是當值的列表來自數據庫時。我的問題是關於從枚舉(服務器端)檢索值列表。這是不一樣的方法。我不想在我的數據庫中存儲不同的值。不管怎麼說,還是要謝謝你。 – Bronzato
您不必在數據庫中保留枚舉描述。將Description屬性添加到每個枚舉值,然後在服務器上構建一組id和description對。使用Enum.GetValues()和Attribute.GetCustomAttributes()來獲取標識和描述。 – pawel
您好Bronzato,我建議您在服務器上定義一次Enum,然後使用API控制器在客戶端上訪問它。 這就是我正在做的事情來填充客戶端上的時區列表。時區的列表由.NET TimeZoneInfo類提供支持,這與您的枚舉場景類似,只要它是從代碼而不是數據庫生成的。 –