MVC 2:html.textboxforなど。vb.net2010
-
04-10-2019 - |
質問
このサンプルASP.NET MVC 2.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 10の適切な構成要素を次のように見て、VB.NETに変換しました。
<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を使用しています。これは、強くタイプされたモデルに縛られたビューです... MVC 2はまだ.NET 2010の新しい言語構成をサポートしていませんか?
これはVB.NETプロジェクトであり、このヘッダーでVBを正しく参照してください。
" %>モデルクラスの定義は次のとおりです。デフォルトのプロジェクト名空間は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
ありがとう。
解決
ああ、私の側で馬鹿げている。私の継承は<>を使用しました、これはC#のみです。必要だった:
System.Web.Mvc.ViewPage(Of MyModel)
そして、それはエラーを修正しました。
他のヒント
ページ指令の言語を変更しましたか:
<%@ Page
Language="VB"
MasterPageFile="~/Views/Shared/Site.Master"
Inherits="System.Web.Mvc.ViewPage<SomeModel>" %>
私は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>" %>
編集:更新; TextBoxforは((オブジェクト、オブジェクトの)FUNCの)式を探し、これを行うためにキャストすることにより、それが機能することがわかりました。
<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:パブリッククラスビューズ_Validation_index_aspx行48:System.web.Mvc.ViewPage Line 49を継承:System.Web.SessionState.IreQuiressessionState、System.Web.Ihttphandler Line 50:
ソースファイル:c: windows microsoft.net framework v4.0.30319 companis asp.net files root 5a4e2626 dee8be7e app_web_index.aspx.b3b8acce.cmmfnwms.0.vbライン:48ライン
VBで勝つことはできません:-)アイデアはありますか?