我有我的MVC3 vb.net应用程序的问题。 当我尝试后我到控制器所做的更改,该模型不发送到控制器。
我试图按照很多帖子喜欢这一个和这一个 ,但我不知道如何实现他们在我的应用程序,因为我的模型没有送IEnumerable的类型。
最后我只希望,该模型为每个批次那就是我将保存到数据库中的值返回一个值。
当我发布模型,并尝试发送到控制器的页面将通过邮寄的情况如下:
Client=2&Datacenters=20&BatchesForAssignation[0].CenterID=4&BatchesForAssignation[1].CenterID=20&BatchesForAssignation[1].DatacenterID=14...
但我不知道如何将这个查询字符串转换为BatchesForAssignation对象,将其分配给模型,并发送到控制器。
注: 客户机 ,并在查询字符串中所示数据中心的值在控制器不使用。 我需要BatchesForAssignation [N] .CenterID一部分。
能否请你点我找到了一个解决方案?
这是我用我的MVC应用程序(代码压缩)的对象:
批量:
Public class Batch
public property ID as integer
public property CenterID as integer
public property name as string
end class
中心(该对象只是存储将被分配到批量中心的所有列表的名称只是在下拉列表中显示的名称。):
Public class Center
public property ID as integer
public property name as string
end class
(还有一个Batchlist以及用作集合从CollectionBase中存储的所有批次和中心的对象继承了Centerlist对象。如果你需要的类定义,请让我知道,但很strightforward)。
该模型如下:
Public class ProcessingModel
public property BatchesForAssignation as BatchList
public property Datacenters as CenterList
End class
所述控制器被如下:
<HttpGet()>
<Authorize()> _
Public Function AssignToDataCenters() As ActionResult
Dim model As New ProcessingModel
Dim BatchHandler As New BatchControl
'This line will get the list of batches without datacenter
model.BatchesForAssignation = BatchHandler.GetBatchesAvailable(ConnectionString)
'This method will get the list of Datacenters available
model.Datacenters=BatchHandler.GetDatacenters(ConnectionString)
return View(model)
End Function
HttpPost(这实际上是不工作,因为该模型将返回一个空模型):
<HttpPost()>
<Authorize()> _
Public Function AssignToDataCenters(ByVal Model as ProcessingModel) As ActionResult
Dim BatchHandler As New BatchControl
Dim SaveResult as Boolean=false
'This line will get the list of batches without datacenter
model.BatchesForAssignation = BatchHandler.GetBatchesAvailable(ConnectionString)
'This method save the information returned by the model
SaveResult=BatchHandler.UpdateBatches(model)
ViewBag("Result")=SaveResult
Return View(model)
End Function
查看如下(是一个强类型的视图):
@ModelType MVCAdmin.ProcessingModel
@Code
ViewData("Title") = "Assign Batches To centers"
End Code
@Using Html.BeginForm()
@<table id="tblAvailableBatches">
<thead>
<tr>
<th>Assign batch to:</th>
<th>Name</th>
</tr>
</thead>
<tbody>
@code
For i As Integer = 0 To Model.BatchesForAssignation.Count - 1
Dim a As Integer = i
@<tr>
<td>@Html.DropDownListFor(Function(m) m.BatchesForAssignation(a).CenterID, New SelectList(Model.Datacenters, "ID", "name", model.BatchesForAssignation(i).CenterID), " ")</td>
<td>@Model.BatchesForAssignation(i).name</td>
</tr>
Next
End Code
</tbody>
</table>
<input type="button" value="Apply changes" id="btnApply" />
End Using
提前致谢
更新2012-06-14:
使得一些researh后,我发现,我可以分析使用控制器的查询字符串request.Form
我可以分析由视图送来的结果。 但查询字符串键的形式BatchesForAssignation[0].CenterID
, BatchesForAssignation[1].CenterID
, BatchesForAssignation[2].CenterID
等等...
有没有更好的办法来做到这一点“自动地”使模型解析查询字符串和解析的对象发送到控制器?
预先再次...谢谢