我有一个VB.NET mvc视图表单,有3个参数和2个按钮,我不知道如何设计我的页面。
按钮1本质上是一个GET - 假设运行一个sql查询并返回一个数据集(多个表)。 按钮2本质上是一个PUT - 假设运行一个sql update语句(多次更新)。
CustomModel将我的3个参数包含为属性,并且我已在所有参数中包含必需属性。
如何设计以便遵守必需属性。 即即使参数输入为空,也会访问我的ViewInfo方法。
我是否使用HttpGet和带有HttpPut属性的UpdateInfo声明ViewInfo。我是否需要ViewInfo方法中的参数声明? 我的@ Html.BeginForm(...)声明是否正确?
VB.NET Model类:
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.NET控制器:
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
答案 0 :(得分:0)
我找到了一个解决方案让我最终走上正轨。
我没有意识到幕后的默认布局页面不包含验证javascript文件,所以我不得不添加到我的特定视图文件中:
@Section scripts
@Scripts.Render("~/bundles/jqueryval")
End Section
是否有必要这样做以便自动引入此文件或者我所做的是否正确您必须手动将其包含在布局或您需要的特定视图中?