강력한 문자열을 사용하여 "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
EDIT 큰 응답
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이 범주에 대한 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
동의합니다. 이것은 실제로 어떻게 할 것인가지만 그가 묻는 것처럼 느끼는 것의 직접적인 예로서 나의 대답을주었습니다. 좋은 코멘트와 예제 텍스트. –