2013-10-01 58 views
1

我得到這個錯誤「CS1928:DropDownListFor ASP MVC4

'System.Web.Mvc.HtmlHelper' 並不 不包含 'DropDownListFor' 和最佳推廣 方法重載 「系統的定義。 Web.Mvc.Html.SelectExtensions.DropDownListFor(System.Web.Mvc.HtmlHelper, System.Linq.Expressions.Expression>, System.Collections.Generic.IEnumerable)」 有一些無效參數」

我的控制器看起來像這樣

public class IndexController : Controller 
{ 
     public ActionResult Index() 
     { 
       EpfeSelectScreen model = new EpfeSelectScreen(); 

       var b = (from a in dbEntitiesErste.CONFIG_APPLICATIONS 
           orderby a.APPLICATION_ID 
           select new EPFE.CustomDataObjects.CustomObjects 
           { 
            Text = a.APPLICATION_NAME, 
            Value = a.APPLICATION_ID 
           }); 

       model.Application = b.OrderBy(x => x.Text).ToList(); 

       return View(model); 




     } 
} 

我的模型是這樣的

public class EpfeSelectScreen 
{ 
    public string Search { get; set; } 
    public string selectedApplication { get; set; } 
    public List<SelectListItem> Country { get; set; } 
    public List<CustomObjects> Application { get; set; } 
    public List<SelectListItem> MetaData { get; set; } 
    public List<SelectListItem> References { get; set; } 
    public List<SelectListItem> ReferencedBy { get; set; } 
    public List<SelectListItem> TreeView { get; set; }  

    public EpfeSelectScreen() 
    { 
     Country = new List<SelectListItem>(); 
     Application = new List<CustomObjects>();   
     References = new List<SelectListItem>(); 
     ReferencedBy = new List<SelectListItem>(); 
     TreeView = new List<SelectListItem>();   
    } 
} 

我CustomObjects是這個

public class CustomObjects 
{ 
    public string Text { get; set; } 
    public short Value { get; set; } 
} 

我在我的model.Application一個記錄,但是當數據傳遞我的觀點,我得到這個錯誤。

而且我查看看起來像這樣

@model EPFE.Controllers.EpfeSelectScreen 
@Html.DropDownListFor(m => m.selectedApplication, Model.Application) 

如何解決這個問題呢?我究竟做錯了什麼?我嘗試使用ListBoxFor時遇到同樣的錯誤。

回答

5

DropDownListFor需要SelectList作爲第二個參數,而您通過List

你可能有類似以下內容:

@Html.DropDownListFor(m => m.selectedApplication, 
        new SelectList(Model.Application,"Value","Text")) 
+0

它工作。謝謝。我不知道與SelectList和List的那部分。你幫了我很多。 – user2718165

0

添加條目砸下來,你可以使用的ViewData傳遞值下拉。

控制器

: 你可以有場景像

 IList<SelectListItem> SelectedOptions = new List<SelectListItem>(); 
     IList<Options> DropDownOptions = new List<Options>(); 
     //Add items to this shipping 
     foreach (var item in DropDownOptions) 
     { 
      SelectListItem sliItem = new SelectListItem(); 
      string optionText = item._name; 
      sliItem.Value = item._value.ToString(); 
      sliItem.Text = optionText; 
      SelectedOptions.Add(sliItem); 
     } 
     ViewData["Option"] = SelectedOptions; 

,並在視圖中,您可以簡單地使用

@Html.DropDownList("Option", ViewData["Option"] as SelectList) 

提交表格時,如果您使用的是類,千萬記得要將字符串屬性與名稱選項放在類中,以便您可以在提交表單時在控制器中使用它的選定值。