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