我似乎無法找到一篇很好的博客文章,其中展示瞭如何將模型綁定到視圖,而不使用魔術字符串「ViewData」(強烈使用我試圖採取的方式)如何在沒有ViewData的情況下綁定Html.DropDownList(強類型視圖)
有沒有人知道我需要改變在下面直接綁定到我的模型?
查看
<%@ Page Language="VB" MasterPageFile="~/Views/Shared/Site.Master" Inherits="System.Web.Mvc.ViewPage(Of IEnumerable (Of MvcApplication1.Category))" %>
<asp:Content ID="aboutContent" ContentPlaceHolderID="MainContent" runat="server">
<%=Html.DropDownList("CategoryList")%>
</asp:Content>
控制器
Function Index() As ActionResult
Dim list As New List(Of Category)
list.Add(New Category With {.CategoryID = 1, .CategoryName = "Test1"})
list.Add(New Category With {.CategoryID = 2, .CategoryName = "Test2"})
Return View()
End Function
編輯
在VB最終的解決方案如下所示,感謝大的反響!
控制器
Function Index() As ActionResult
Dim id As Integer = 1
Dim ProductObject As Product = mProductService.GetProductById(id)
Return View(ProductObject)
End Function
查看
<%=Html.DropDownList("Category", New SelectList(Model.Categories, "CategoryID", "CategoryName"))%>
產品類別(W/A IEnumeralbe屬性的類別)
Public Class Product
Public Sub New()
End Sub
Private mProductID As Integer
Public Property ProductID() As Integer
Get
Return mProductID
End Get
Set(ByVal value As Integer)
mProductID = value
End Set
End Property
ReadOnly Property Categories() As IEnumerable(Of Category)
Get
Dim list As New List(Of Category)
list.Add(New Category With {.CategoryID = 1, .CategoryName = "Test1"})
list.Add(New Category With {.CategoryID = 2, .CategoryName = "Test2"})
Return list
End Get
End Property
End Class
公平的,我可以混合ViewData(「列表」)與模型,因爲我有時有一個強類型視圖來填充表/ etc,但我需要填充下拉列表。我是否能夠在相同的觀點都能做到這一點? – 2009-05-21 02:25:01
是因爲這僅僅是一個超負荷簡單的API,但標準的方法簽名將仍然存在。 – 2009-05-21 02:27:10