0
我試圖將模型(在我的情況下是PresentationModel)作爲變量傳遞給控制器中的post方法。但它崩潰,因爲我的參數不與它一起發送。但是,這應該是可選的,但它仍然崩潰。這是我到目前爲止。模型沒有傳遞到控制器的post方法(asp.net visual basic)
型號
Public Class ClassA
Public Shared Items As List(Of ClassA) = New List(Of ClassA)
<Required(ErrorMessage:="Required")>
<MinLength(100, ErrorMessage:="to short")>
Public Name As String
<Required(ErrorMessage:="Required")>
Public Age As Integer
Public Message As String
Public Sub New(name As String, age As Integer, message As String)
Me.Name = name
Me.Age = age
Me.Message = message
End Sub
Public Sub AddItem(item As ClassA)
Items.Add(item)
End Sub
End Class
PresentationModel
Public Class PMClassA
Inherits ClassA
Public Extra As String
Public Sub New(name As String, age As Integer, message As String)
MyBase.New(name, age, message)
End Sub
End Class
控制器
<HttpGet>
Function Test() As ActionResult
Dim v As PMClassA = New PMClassA("test", 0, "test")
Dim ListItem As List(Of SelectListItem) = New List(Of SelectListItem)
For i As Integer = 0 To 5
v.AddItem(New ClassA("Name" + i.ToString(), i, "Message" + i.ToString()))
ListItem.Add(New SelectListItem With {.Text = PMClassA.Items.Item(i).Name, .Value = PMClassA.Items.Item(i).Name})
Next i
ViewBag.Variable = v.Name
ViewData("List") = New SelectList(ListItem, "Value", "Text", "")
Return View(v)
End Function
<HttpPost>
Function TestPost(Optional PMClassA As PMClassA = Nothing) As ActionResult
If (String.IsNullOrEmpty(Request.QueryString("PMClassA")) Or String.IsNullOrEmpty(Request.QueryString("Extra"))) Then
Return View("Error")
End If
If (ModelState.IsValid) Then
Return View()
End If
Return View
查看
@ModelType TestApp.PMClassA
<h2>@ViewBag.Variable</h2>
@Using (Html.BeginForm("TestPost", "Home", FormMethod.Post))
@Html.AntiForgeryToken()
@<div class="form-horizontal">
<h4>ClassA</h4>
@Html.ValidationMessageFor(Function(model) model.Name)
<br />
@Html.ValidationMessageFor(Function(model) model.Age)
<br />
@Html.ValidationMessageFor(Function(model) model.Message)
<input type="hidden" value="extra stuff" name="Extra" />
<hr />
@Html.ValidationSummary(True, "", New With {.class = "text-danger"})
<p>@Html.DropDownListFor(Function(model) model.Name, ViewData("List"))</p>
<div class="form-group">
<div class="col-md-offset-2 col-md-10">
<input type="submit" value="Opslaan" name="Opslaan" class="btn btn-default" />
</div>
</div>
</div>
End Using
<div>
@Html.ActionLink("Back to List", "Index")
</div>
爲什麼我在我的post方法中沒有任何值?我應該得到帶有變量的PMClassA對象:來自ClassA的「Name,Age,Message」和來自PMClassA的「Extra」。
編輯
但是我可以獲得Name和Extra的信息。
Function TestPost(Optional Name As String = "", Optional Extra As String = "") As ActionResult
If (String.IsNullOrEmpty(Request.QueryString("Name")) Or String.IsNullOrEmpty(Request.QueryString("Extra"))) Then
Return View("Error")
End If
但是爲什麼我收到「名稱」和「額外的」,而不是與「名稱」和「額外」填補了PMClassA對象?
感謝您的快速響應。現在測試它。 – Developer
仍然無法正常工作。我添加了 我也改變了最小長度到2. – Developer
我試着將PMClassA中的inhertitance改爲一個變量。這一次它不會崩潰並進入方法。然而,PMClassA與額外變量不同。 – Developer