0

コードは VB で、MVC 4 (おそらく 5) を使用しています。コードの 2 つの問題を見つけようとしていますが、現在のところ、現在の問題の原因となるものを見つけることができませんでした。まず、モデルが返されると、何もないように見えます (含まれているすべての要素は何もありません)。これは問題です。私はオンラインで調べましたが、解決策 (または問題が何であるかの提案) を見つけることができませんでした。第 2 に、ボタンの 1 つが押されると、すぐに正しい HttpPost メソッドに移動せず、代わりに (不規則な順序で) 循環します。これも気になるところです。

これがコントローラーです。モデルは、httpget としてマークされているインデックスによってビューに渡されています。

Imports System.Data.SqlClient
Imports System.Web.Mvc
Imports System.Web.Routing
Imports System.ComponentModel.DataAnnotations

Namespace Test
    <HttpPost()> _
    Function SelectUser(ByVal Model As Test.Models.AdminModel) As ActionResult
        Return View("Index", Model)
    End Function

    <HttpPost()> _
    Function AddEnv(ByVal Model As Test2.Models.AdminModel) As ActionResult
        Return View("Index", Model)
    End Function

    <HttpPost()> _
    Function RemoveEnv(ByVal Model As Test.Models.AdminModel) As ActionResult
        Return View("Index", Model)
    End Function

    <HttpPost()> _
    Function AddApp(ByVal Model As Test.Models.AdminModel) As ActionResult
        Return View("Index", Model)
    End Function

    <HttpPost()> _
    Function RemoveApp(ByVal Model As Test.Models.AdminModel) As ActionResult
        Return View("Index", Model)
    End Function
End Namespace

これがビューです。モデルは正しくバインドされているようです (私はインテリセンスを取得します)

@ModelType Test.Test.Models.AdminModel
@Code
ViewData("Title") = "Admin"
Layout = "~/Views/Shared/_Admin.vbhtml"
End Code  

<table>
<tr>
    @Using (Html.BeginForm("SelectUser", "Admin", method:=FormMethod.Post))
        @<td>Username:&nbsp;</td>
        @<td>@Html.TextBoxFor(Function(Model) Model.UserAccount.Username)</td>
        @<td><a href="javascript:$('form').submit();" class='BUTTON' style="display:   inline-block; height: 30px; width: 80px"><span>Select User</span></a></td>
        @<td><input type ="submit" Class="BUTTON" style="display: inline-block; height:   30px; width: 80px" value ="Login"/></td>
    End Using
</tr>

<tr>
    @Using (Html.BeginForm("AddApp", "Admin", method:=FormMethod.Post))
        @<td>Add App:&nbsp;</td>
        @<td>@Html.TextBoxFor(Function(Model) Model.NewApp)</td>
        @<td><a href="javascript:$('form').submit();" class='BUTTON' style="display: inline-block; height: 30px; width: 80px"><span>Add App</span></a></td>
        @<td><input type ="submit" Class="BUTTON" style="display: inline-block; height: 30px; width: 80px" value ="Login"/></td>
    End Using

</tr>
<tr>
    @Using (Html.BeginForm("RemoveApp", "Admin", method:=FormMethod.Post))
        @<td>Remove App:</td>
        @<td>@Html.DropDownListFor(Function(Model) Model.AppList, Model.AppList)</td>
        @<td><a href="javascript:$('form').submit();" class='BUTTON' style="display: inline-block; height: 30px; width: 80px"><span>Remove App</span></a></td>
        @<td><input type ="submit" Class="BUTTON" style="display: inline-block; height: 30px; width: 80px" value ="Login"/></td>
    End Using
</tr>

<tr>
    @Using (Html.BeginForm("AddEnv", "Admin", method:=FormMethod.Post))
        @<td>Add Env:&nbsp;</td>
        @<td>@Html.TextBoxFor(Function(Model) Model.NewEnv)</td>
        @<td><a href="javascript:$('form').submit();" class='BUTTON' style="display: inline-block; height: 30px; width: 80px"><span>Add Env</span></a></td>
        @<td><input type ="submit" Class="BUTTON" style="display: inline-block; height: 30px; width: 80px" value ="Login"/></td>
    End Using
</tr>
<tr>
    @Using (Html.BeginForm("RemoveEnv", "Admin", method:=FormMethod.Post))
        @<td>Remove Env:</td>
        @<td>@Html.DropDownListFor(Function(Model) Model.EnvList, Model.EnvList)</td>
        @<td><a href="javascript:$('form').submit();" class='BUTTON' style="display: inline-block; height: 30px; width: 80px"><span>Remove Env</span></a></td>
        @<td><input type ="submit" Class="BUTTON" style="display: inline-block; height:     30px; width: 80px" value ="Login"/></td>
    End Using
</tr>

</table>

最後に、モデル:

Imports System.ComponentModel.DataAnnotations
Namespace Test.Models
Public Class AdminModel
    <Required(ErrorMessage:="User Name field is required"), Display(Name:="User Name")>
    Public UserAccount As User2.User
    Public AppList As SelectList
    Public EnvList As SelectList
    Public PermissionsTable As DataTable
    Public NewEnv As String
    Public NewApp As String
End Class
End Namespace
4

1 に答える 1

0

パブリック変数ではなく、モデルでプロパティを使用する必要があります。

Public Property UserAccount As User2.User
    Public Property AppList As SelectList
    Public Property EnvList As SelectList
    Public Property PermissionsTable As DataTable
    Public Property NewEnv As String
    Public Property NewApp As String
于 2013-10-18T18:24:37.483 に答える