1

このサンプルASP.NETMVC2.0ビューをC#で使用しており、名前、名前、および電子メールを持つ厳密に型指定されたモデルにバインドされています。

<div>
    First: <%= Html.TextBoxFor(i => i.FirstName) %>
    <%= Html.ValidationMessageFor(i => i.FirstName, "*") %>
</div>
<div>
    Last: <%= Html.TextBoxFor(i => i.LastName) %>
    <%= Html.ValidationMessageFor(i => i.LastName, "*")%>
</div>
<div>
    Email: <%= Html.TextBoxFor(i => i.Email) %>
    <%= Html.ValidationMessageFor(i => i.Email, "*")%>
</div>

私はそれをVB.NETに変換し、VB.NET10の適切な構成を次のように確認しました。

<div>
    First: <%= Html.TextBoxFor(Function(i) i.FirstName) %>
    <%= Html.ValidationMessageFor(Function(i) i.FirstName, "*") %>
</div>
<div>
    Last: <%= Html.TextBoxFor(Function(i) i.LastName)%>
    <%= Html.ValidationMessageFor(Function(i) i.LastName, "*")%>
</div>
<div>
    Email: <%= Html.TextBoxFor(Function(i) i.Email)%>
    <%= Html.ValidationMessageFor(Function(i) i.Email, "*")%>
</div>

運がない。これは正しいですか、そうでない場合は、どの構文を使用する必要がありますか?繰り返しになりますが、私はASP.NET MVC 2.0を使用しています。これは、強く型付けされたモデルにバインドされたビューです... MVC2はまだ.NET2010の新しい言語構造をサポートしていませんか?

これはVB.NETプロジェクトであり、次のヘッダーを使用してVBを正しく参照しています。

"%>

Modelクラスの定義は次のとおりです。デフォルトのプロジェクト名前空間はMvcSample.VBです。

Namespace Models.Validation
    Public Class ValidationSampleTestClass
        <Required(ErrorMessage:="First name required.")> _
        Public Property FirstName() As String
            Get
                Return m_FirstName
            End Get
            Set(ByVal value As String)
                m_FirstName = value
            End Set
        End Property
        Private m_FirstName As String
        .
        .
        .
    End Class
End Namespace

ありがとう。

4

4 に答える 4

2

ああ、私の側ではばかげている。私の継承は<>を使用しました。これはC#のみです。必要だった:

System.Web.Mvc.ViewPage(Of MyModel)

そして、それはエラーを修正しました。

于 2010-05-10T00:44:39.050 に答える
1

Pageディレクティブの言語を変更しましたか?

<%@ Page 
    Language="VB" 
    MasterPageFile="~/Views/Shared/Site.Master" 
    Inherits="System.Web.Mvc.ViewPage<SomeModel>" %>
于 2010-05-09T05:59:12.750 に答える
1

私はVBの専門家ではありませんが、これは

    <%@ Page 
Title="" 
Language="VB" 
MasterPageFile="~/Views/Shared/Site.Master" 
Inherits="System.Web.Mvc.ViewPage" %> 

これに変更する必要があります

    <%@ Page 
Title="" 
Language="VB" 
MasterPageFile="~/Views/Shared/Site.Master"
Inherits="System.Web.Mvc.ViewPage<Models.Validation.ValidationSampleTestClass>" %> 
于 2010-05-09T18:04:36.030 に答える
0

編集:更新; TextBoxForがExpression(Of Func(Of Object、Object))を検索し、これを実行するためにキャストすることで機能することがわかりました。

<div>
    First: <%= Html.TextBoxFor(Function(i) DirectCast(i, ValidationSampleTestClass).FirstName)%>
    <%= Html.ValidationMessageFor(Function(i) DirectCast(i, ValidationSampleTestClass).FirstName, "*")%>
</div>
<div>
    Last: <%= Html.TextBoxFor(Function(i) DirectCast(i, ValidationSampleTestClass).LastName)%>
    <%= Html.ValidationMessageFor(Function(i) DirectCast(i, ValidationSampleTestClass).LastName, "*")%>
</div>
<div>
    Email: <%= Html.TextBoxFor(Function(i) DirectCast(i, ValidationSampleTestClass).Email)%>
    <%= Html.ValidationMessageFor(Function(i) DirectCast(i, ValidationSampleTestClass).Email, "*")%>
</div>

しかし今、私はランタイムエラーを受け取ります:

説明:このリクエストを処理するために必要なリソースのコンパイル中にエラーが発生しました。以下の特定のエラーの詳細を確認し、ソースコードを適切に変更してください。

コンパイラエラーメッセージ:BC30205:ステートメントの終わりが必要です。

ソースエラー:

46行目:_ 47行目:パブリッククラスviews_validation_index_aspx 48行目:System.Web.Mvc.ViewPageを継承します49行目:System.Web.SessionState.IRequiresSessionState、System.Web.IHttpHandlerを実装します50行目:

ソースファイル:C:\ Windows \ Microsoft.NET \ Framework \ v4.0.30319 \ Temporary ASP.NET Files \ root \ 5a4e2626 \ dee8be7e \ App_Web_index.aspx.b3b8acce.cmmfnwms.0.vb行:48

私はVBで勝つことはできません:-)何かアイデアはありますか?

于 2010-05-09T18:01:22.513 に答える