首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Visual Basic中的ASP.NET MVC2小写路由

Visual Basic中的ASP.NET MVC2小写路由
EN

Stack Overflow用户
提问于 2010-07-07 14:36:56
回答 1查看 424关注 0票数 1

我在C#中找到了4到5个“小写路由”的例子,但是当我使用telerik代码转换器时,我得到了一堆错误。

即与"extension methods can be defined only in modules."有关的内容

有没有人有关于如何在VB中将路由映射为小写的好资源?

编辑:

以下是一些出错的转换代码的示例

代码语言:javascript
复制
Imports System
Imports System.Web.Mvc
Imports System.Web.Routing

Namespace MyMvcApplication.App.Helpers
    Public Class LowercaseRoute
        Inherits System.Web.Routing.Route
        Public Sub New(ByVal url As String, ByVal routeHandler As IRouteHandler)
            MyBase.New(url, routeHandler)
        End Sub
        Public Sub New(ByVal url As String, ByVal defaults As RouteValueDictionary, ByVal routeHandler As IRouteHandler)
            MyBase.New(url, defaults, routeHandler)
        End Sub
        Public Sub New(ByVal url As String, ByVal defaults As RouteValueDictionary, ByVal constraints As RouteValueDictionary, ByVal routeHandler As IRouteHandler)
            MyBase.New(url, defaults, constraints, routeHandler)
        End Sub
        Public Sub New(ByVal url As String, ByVal defaults As RouteValueDictionary, ByVal constraints As RouteValueDictionary, ByVal dataTokens As RouteValueDictionary, ByVal routeHandler As IRouteHandler)
            MyBase.New(url, defaults, constraints, dataTokens, routeHandler)
        End Sub

        Public Overrides Function GetVirtualPath(ByVal requestContext As RequestContext, ByVal values As RouteValueDictionary) As VirtualPathData
            Dim path As VirtualPathData = MyBase.GetVirtualPath(requestContext, values)

            If path IsNot Nothing Then
                path.VirtualPath = path.VirtualPath.ToLowerInvariant()
            End If

            Return path
        End Function
    End Class

    Public NotInheritable Class RouteCollectionExtensions
        Private Sub New()
        End Sub
        <System.Runtime.CompilerServices.Extension()> _
        Public Shared Sub MapRouteLowercase(ByVal routes As RouteCollection, ByVal name As String, ByVal url As String, ByVal defaults As Object)
            routes.MapRouteLowercase(name, url, defaults, Nothing)
        End Sub

        <System.Runtime.CompilerServices.Extension()> _
        Public Shared Sub MapRouteLowercase(ByVal routes As RouteCollection, ByVal name As String, ByVal url As String, ByVal defaults As Object, ByVal constraints As Object)
            If routes Is Nothing Then
                Throw New ArgumentNullException("routes")
            End If

            If url Is Nothing Then
                Throw New ArgumentNullException("url")
            End If

            Dim route = New LowercaseRoute(url, New MvcRouteHandler()) With { _
             .Defaults = New RouteValueDictionary(defaults), _
             .Constraints = New RouteValueDictionary(constraints) _
            }

            If [String].IsNullOrEmpty(name) Then
                routes.Add(route)
            Else
                routes.Add(name, route)
            End If
        End Sub
    End Class
End Namespace
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2010-07-08 21:19:35

来解决你的“扩展方法只能在模块中定义”的问题。问题:将定义这些方法的"NotInheritable类“更改为”模块“,并删除构造函数。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/3192444

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档