2011-09-20 48 views
0

錯誤類型:輸出false false false for @ Html.EditorFor(model => model.Items)@ html.Listbox(「someName」,Model.Items)有效,但@ Html.EditorFor(model => model.items)不起作用爲什麼?

預期結果:帶有用戶名的列表框。

視圖模型

public class NewVariance 
    { 
     MVRLinqDataContext LinqCtx = new MVRLinqDataContext() 
     public NewVariance() 
     { 
      IndividualsObjectTest();//load data dropdown and listbox data 
     } 

     public MultiSelectList Items { get; set; } 

     //loads the values of the MultiSelectList above 
     public void IndividualsObjectTest() 
     { 
      var IndividualsDropDownList = 
         (
         from x in LinqCtx.ViewIndividualDropDownBoxes 
         orderby x.FullName 
         select x); 

       Items = new MultiSelectList 
       (
       IndividualsDropDownList as 
System.Collections.IEnumerable, "First_Hospital_Case_Nbr", "FullName" 

      ); 

     } 

控制器

public class NewVarianceController : Controller 
    { 
     public ActionResult Index() 
     { 
       var model = new NewVariance(); 
       return View(new model); 
     } 

    } 

查看

@Html.ListBox("d",Model.Items) THIS WORKS 
    @Html.EditorFor(model => model.Items) THIS DOESNT WORK OUTPUTS FALSE FALSE FALSE 
+0

爲什麼不使用'@ Html.ListBoxFor(x => x.Items)'?另外,您是否有'MultiSelectList'的特定編輯器模板?我懷疑你這樣做。 – Tejs

回答

3

的編輯模板只是呈現基於屬性類型的一些default output。如果您希望做一些有用的事情,您需要將其個性化。您可以在this blog post上閱讀關於模板助手的更多信息。你不能指望一個默認的編輯器模板會知道你想讓它爲這個給定的屬性渲染一個列表框。所以你可以編寫一個自定義編輯器模板並對此行爲進行個性化設置

+0

所以基本上把它 @model NewVariance @ Html.ListBox( 「d」,Model.Items)在EditorTemplates – hidden

+0

@jvelez的局部視圖,實際上這會是'@model IEnumerable的 @ Html.ListBox( 「d」 ,Model)',因爲你將像這樣調用它'@ Html.EditorFor(x => x.Items)',所以你將會把一個集合傳遞給這個編輯器模板。 –

+0

我試過,我得到的html.helper不包含MultiSelectList的定義 – hidden

相關問題