我有一个VB。. NET mvc视图的形式,有3个参数和2个按钮,我不知道如何设计我的页面。
Button 1本质上是一个GET -假设运行一个sql查询并返回一个数据集(多个表)。按钮2本质上是一个PUT -假设运行一个sql更新语句(多个更新)。
CustomModel包含了我的3个参数作为属性,并且我在所有参数中都包含了Required属性。
我如何设计,使必需的属性得到尊重。也就是说,即使参数输入为空白,我的ViewInfo方法也会被访问。
我声明ViewInfo与HttpGet和我的UpdateInfo与HttpPut属性。我需要在ViewInfo方法中声明参数吗?我的@Html.BeginForm(…)声明正确吗?
VB。. NET模型类:
Public Class CustomModel
<Required(ErrorMessage:="Parameter 1 is required"),
Display(Name:="Parameter 1:")>
Public Property Parameter1 As String
<Required(ErrorMessage:="Parameter 2 is required"),
Display(Name:="Parameter 2:")>
Public Property Parameter2 As String
<Required(ErrorMessage:="Parameter 3 is required"),
Display(Name:="Parameter 3:")>
Public Property Parameter3 As Integer
Public Sub New(Parameter1 As String, Parameter2 As String, Parameter3 As Integer)
Me.Parameter1 = Parameter1
Me.Parameter2 = Parameter2
Me.Parameter3 = Parameter3
End Sub
Public Property Info As DataSet = New DataSet
End Class
VB。网络控制器:
Function Index() As ActionResult
ViewBag.ShowView = False
Return View()
End Function
Function ViewInfo(Parameter1 As String, Parameter2 As String, Parameter3 As Integer)
Dim result As New CustomModel(Parameter1, Parameter2, Parameter3)
If ModelState.IsValid Then
result.Info = GetInfo(Parameter1, Parameter2, Parameter3)
End If
ViewBag.ShowView = True
Return View("Index", result)
End Function
Function UpdateInfo(Parameter1 As String, Parameter2 As String, Parameter3 As Integer)
Dim result As New CustomModel(Parameter1, Parameter2, Parameter3)
If ModelState.IsValid Then
result.Info = UpdateInfo(Parameter1, Parameter2, Parameter3)
End If
ViewBag.ShowView = True
Return View("Index", result)
End Function
HTML视图@ModelType CustomModel
...
@Using (Html.BeginForm("ViewInfo", "Home", Nothing, FormMethod.Post))
...
@Html.LabelFor(...)
@Html.TextBoxFor(...)
...
<button type=button>View</button>
<button type=submit>Update</button>
End Using
输出:@If ViewBag.Show Then
// Multiple WebGrid calls ???
End If
我终于找到了一个让我上路的办法。
我没有意识到后台的默认布局页面不包括验证javascript文件,所以我不得不添加到我的特定视图文件:
@Section scripts
@Scripts.Render("~/bundles/jqueryval")
End Section
是否有一些你必须做的,这样这个文件是自动带来的,或者我所做的是正确的,你必须手动包括它在布局或特定的视图,你需要它?