VB.NET MVC Get vs Post如何设计我的页面

时间:2016-10-04 01:09:14

标签: asp.net-mvc vb.net

我有一个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

1 个答案:

答案 0 :(得分:0)

我找到了一个解决方案让我最终走上正轨。

我没有意识到幕后的默认布局页面不包含验证javascript文件,所以我不得不添加到我的特定视图文件中:

@Section scripts
    @Scripts.Render("~/bundles/jqueryval")
End Section

是否有必要这样做以便自动引入此文件或者我所做的是否正确您必须手动将其包含在布局或您需要的特定视图中?