2009-12-14 52 views
0

我想創建一個包含2項一個DropDownList:部分名稱和NSN如何使用靜態項目創建ASP.NET MVC HTML.DropDownList?

此下拉列表將用作搜索框控件的一部分,該控件將作爲母版頁的一部分進行部分渲染。用戶將輸入他們的搜索文本,並從下拉列表中選擇部件名稱或NSN,然後單擊提交。該查詢將返回基於搜索文本的結果。我已經定義PartsController和這裏的它的相關部分:

Function Search(ByVal searchtext As String, ByVal SearchType As String) As ActionResult 
     Dim searchlist As List(Of String) = New List(Of String) 
     searchlist.Add("Part Name") 
     searchlist.Add("NSN") 
     ViewData("searchlist") = New SelectList(searchlist) 

     If SearchType = "PARTNAME" Then 
      Dim SearchResult = From p In _entities.PartList _ 
       Where p.PARTNAME = searchtext _ 
       Select p 
      Return View(SearchResult) 
     End If 
     If SearchType = "NSN" Then 
      Dim SearchResult = From p In _entities.PartList _ 
       Where p.NSN = searchtext _ 
       Select p 
      Return View(SearchResult) 
     End If 
     Return View("UnknownType") 
    End Function 

PartsForm.ascx定義如下:

<%@ Control Language="VB" Inherits="System.Web.Mvc.ViewUserControl(Of DielToolMVC.PartList)" %> 
    <%=Html.ValidationSummary("Please correct the errors and try again")%> 
    <% Using (Html.BeginForm("Search", "PartsController"))%> 
     <fieldset> 
      <p> 
       <label for="Parts">Please enter a part description or NSN.</label> 
       <%=Html.TextBox("searchtext") %> 
       <%=Html.DropDownList("searchlist")%> 
       <%=Html.ValidationMessage("Part Name or NSN", "*")%> 
      </p> 
      <p> 
       <input type="submit" value="Search" /> 
      </p> 
     </fieldset> 
    <% End Using%> 

當調試時,收到以下錯誤消息:

沒有類型爲'IEnumerable'的鍵'searchlist'的ViewData項目。

我有點困惑,因爲MSDN文檔演示類似的例子。但是,在遵循這些例子之後,我得到這個錯誤。我忽略了什麼?

回答

1

如果該控件呈現爲您的母版頁的一部分,那麼靜態值列表將不得不加入到ViewData的每個以及將呈現與母版頁視圖的每一個動作方法。如果值是靜態的,並不會在每次調用改變,那麼你應該只是其中編碼到你的局部視圖這樣的:

<select id="searchlist" name="searchlist"> 
     <option value="PARTNAME" label="Part Name" /> 
     <option value="NSN" label="NSN" /> 
</select> 

或本:

<% Dim items As New List(Of SelectListItem)() 
    items.Add(New SelectListItem() With {.Value = "PARTNAME", .Text = "Part Name", .Selected = True}) 
    items.Add(New SelectListItem() With {.Value = "NSN", .Text = "NSN"}) 
%> 

<%=Html.DropDownList("searchlist", items)%> 
+0

感謝傑夫。我打算將控件渲染爲母版頁的一部分。代碼是最有幫助的。我很驚訝VB中缺乏dropdownlist示例,這些示例很容易找到。非常感謝您的幫助! – SidC 2009-12-14 18:38:16

0

有沒有可能你沒有擊中你認爲你的動作?你可以放置一個斷點,它將查詢列表添加到ViewData中,以確保點擊?

相關問題