我正在使用Viewmodel,但是当我提交表单时,我没有收回数值。MVC ViewModel不回发
我有一个模型就像这个...
Public Class ProductSummaryModel
Property productGUID As Integer
Property productName As String
Property productPrice As Double
Property productSku As String
Property categories As String()
Property ShipsWithin As Nullable(Of Integer)
<AllowHtml>
Property productWebDescription As String
Property ImageMainPath As String
End Class
然后,我有一个视图模型就像这个...
Public Class ProductViewModel
Public ProductSummary As ProductSummaryModel
End Class
这里是我的控制器......
Public Function Add() As ActionResult ' Default View To Add Item
Dim prdsummary As ProductViewModel = New ProductViewModel
Return View("Add", prdsummary)
End Function
在我的“添加”视图我有以下...
<tr>
<td>Price: </td>
<td><%=Html.TextBoxFor(Function(f) f.ProductSummary.productPrice)%></td>
</tr>
问题是,当我提交FORM时,我无法获得POSTED表单值。
Public Function AddItem(ByVal Model As ProductViewModel) As ActionResult ' Add Item into DB
Dim ajaxMessage As New AjaxFormResponse
Dim prd As ProductSummaryModel = New ProductSummaryModel
Model.ProductSummary = prd
Dim skuID As Integer = 0
msgbox(Model.ProductSummary.categories) ' Empty
End Function
可能有更好的方法来处理这个问题。
* UPDATE * *
我已经想通了,问题是什么......当传递模型视图模型我不得不这样做......
Dim Product As ProductViewModel = New ProductViewModel
Dim ProductSummary As New ProductSummaryModel
Product.ProductSummary = ProductSummary
Return View("Add", Product)
Spock,这是我以前的做法,问题是......我有多个TABS,每个TAB都是一个局部视图。每个选项卡将包含自己的ViewModel,然后我将通过数据库发送我的主模型(ProductViewModel),而不是传递多个/独立的ViewModel。 – highwingers
在具有局部视图的主视图中,使用Inherits =“System.Web.Mvc.ViewPage(Of MvcApplication2.ProductViewModel)”。您的部分视图使用我发布的上述解决方案。当您从主视图中将其作为部分视图调用时,例如Html.RenderPartial(“_ YourProduceSummaryPartialView,Model.ProductSummaryModel”)。当然在你的局部View @ Page Language =“VB”MasterPageFile =“〜/ Views/Shared/Site.Master” Inherits =“System.Web.Mvc.ViewPage(Of MvcApplication2.ProductSummaryModel)”%> – Spock
这里是有关设置局部视图的更多信息http://forums.asp.net/p/1908088/5399482.aspx?Re+Html+RenderAction+causes+application+to+hang – Spock