代码之家  ›  专栏  ›  技术社区  ›  Brian Mains

MVC 2:vb.net 2010中的html.textbox for等

  •  1
  • Brian Mains  · 技术社区  · 15 年前

    我在C_中有一个示例ASP.NET MVC 2.0视图,它绑定到一个强类型模型,该模型具有名字、姓氏和电子邮件:

    <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.net 10中看到了适当的构造,如下所示:

    <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:

    “%& gt;

    下面是模型类的定义;默认项目名称空间为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 回复  |  直到 15 年前
        1
  •  2
  •   Brian Mains    15 年前

    啊,对我来说太蠢了;我的继承使用了<>,这只是我需要的:

    System.Web.Mvc.ViewPage(Of MyModel)
    

    这修正了错误。

        2
  •  1
  •   Darin Dimitrov    15 年前

    是否更改了page指令中的语言:

    <%@ Page 
        Language="VB" 
        MasterPageFile="~/Views/Shared/Site.Master" 
        Inherits="System.Web.Mvc.ViewPage<SomeModel>" %>
    
        3
  •  1
  •   Raj Kaimal    15 年前

    我不是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>" %> 
    
        4
  •  0
  •   Brian Mains    15 年前

    编辑:更新;发现textbox for查找表达式(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行:公共类视图\u验证\u索引\u 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\u web\u index.aspx.b3b8acce.cmmmfwms.0.vb行:48

    我不能用vb赢:有什么想法吗?