2011-01-09 20 views
0

時,這是我創造我的下拉ModelsState總是無效使用Html.DropDownListFor

@Html.DropDownListFor(model => model.NewPageModel.AvailablePageModels, new SelectList(Model.NewPageModel.AvailablePageModels, "Text", "Value")) 

,這是我AvailablePageModels看起來像

public IEnumerable<SelectListItem> AvailablePageModels 
{ 
    get 
    { 
     foreach (var assembly in AppDomain.CurrentDomain.GetAssemblies()) 
     { 
      foreach (var type in assembly.GetTypes()) 
      { 
       if (type.GetCustomAttributes(typeof(PageModelAttribute), true).Length > 0) 
       { 
        yield return new SelectListItem { Text = type.Name, Value = type.Name }; 
       } 
      } 
     } 
    } 
} 

,當我後我的形式向下列行動我的模型狀態始終無效,並且錯誤發生在AvailablePageModel值上?也許我不能以這種方式使用NewPageModel作爲參數?

public ActionResult Create([Bind(Prefix = "NewPageModel")] NewPageModel newPageModel, FormCollection collection) 
    { 
     if(ModelState.IsValid) { 
      // always invalid 
     } 
    } 

回答

0

你需要2場,一個在下降的可用選項下拉列表,一個用於存儲選定值

Html.DropDownListFor(m => m.NewPageModel.SelectedModel, 
new SelectList(Model.NewPageModel.AvailablePageModels, "Text", "Value")) 
+0

感謝您的幫助! – Marcus 2011-01-09 18:17:19