utility.vb

来自「C#语言制作asp.net网上商店的」· VB 代码 · 共 741 行 · 第 1/2 页

VB
741
字号
Imports Microsoft.VisualBasic
Imports System
Imports System.Data
Imports System.Configuration
Imports System.Web
Imports System.Web.Security
Imports System.Web.UI
Imports System.Web.UI.WebControls
Imports System.Web.UI.WebControls.WebParts
Imports System.Web.UI.HtmlControls
Imports System.IO
Imports System.Text
Imports System.Collections
Imports System.Xml
Imports System.Xml.Serialization

Namespace NetShopForge.Common
    Public Class Utility

        Public Shared Function ParseString(ByVal sVal As String, ByVal startTag As String, ByVal EndTag As String) As String
            Dim sIn As String = sVal
            Dim sOut As String = ""
            Dim tagStart As Integer = sIn.ToLower().IndexOf(startTag.ToLower())

            Try
                sIn = sIn.Remove(0, tagStart)
                sIn = sIn.Replace(startTag, "")
                Dim tagEnd As Integer = sIn.ToLower().IndexOf(EndTag.ToLower())

                Dim sName As String = sIn.Substring(0, tagEnd)

                sOut = sName
            Catch
            End Try
            Return sOut
        End Function

        ''' <summary>
        ''' Returns the Xml representation of object-specific data as a string
        ''' </summary>
        ''' <returns></returns>
        Public Shared Function ObjectToXML(ByVal type As Type, ByVal obby As Object) As String
            'Create the serializer
            Dim ser As XmlSerializer = New XmlSerializer(type)
            Using stm As System.IO.MemoryStream = New System.IO.MemoryStream()

                'serialize to a memory stream
                ser.Serialize(stm, obby)

                'reset to beginning so we can read it.  
                stm.Position = 0
                'Convert a string. 
                Using stmReader As System.IO.StreamReader = New System.IO.StreamReader(stm)
                    Dim xmlData As String = stmReader.ReadToEnd()
                    Return xmlData
                End Using
            End Using

        End Function

        Public Shared Function XmlToObject(ByVal type As Type, ByVal xml As String) As Object
            Dim oOut As Object = Nothing
            'hydrate based on private string var
            If xml.Length > 0 Then
                Dim serializer As System.Xml.Serialization.XmlSerializer = New System.Xml.Serialization.XmlSerializer(type)
                Dim sb As System.Text.StringBuilder = New System.Text.StringBuilder()
                sb.Append(xml)
                Dim sReader As System.IO.StringReader = New System.IO.StringReader(xml)
                oOut = serializer.Deserialize(sReader)
                sb = Nothing
                sReader.Close()
            End If

            Return oOut
        End Function
        ''' <summary>
        ''' This method will examine the current URL for use of https. If https:// isn't present, 
        ''' the page will reset itself to the secure url. This does NOT happen for localhost.
        ''' </summary>
        Public Shared Sub TestForSSL()

            'this is the current url 
            Dim currentUrl As String = System.Web.HttpContext.Current.Request.Url.ToString()
            'don't redirect if this is localhost
            If (Not currentUrl.Contains("localhost")) Then
                If (Not currentUrl.StartsWith("https://")) Then
                    'show a warning
                    System.Web.HttpContext.Current.Response.Write("<div style='height:30px; border:1px red solid;background-color:#ffffcc; font-weight:bold'>SSL is NOT enabled for this page which is a critical security issue. Please enable SSL on this page.</div>")

                End If
            End If

        End Sub

        ''' <summary>
        ''' Returns an SSL-enabled URL
        ''' </summary>
        ''' <returns></returns>
        Public Shared Function GetSecureRoot() As String
            'this is the current url 
            Dim siteUrl As String = Utility.GetSiteRoot()
            If (Not siteUrl.ToLower().StartsWith("https://")) Then
                siteUrl = siteUrl.Replace("http:", "https:")
            End If
            Return siteUrl
        End Function

        ''' <summary>
        ''' Returns a regular URL
        ''' </summary>
        ''' <returns></returns>
        Public Shared Function GetNonSSLRoot() As String
            'this is the current url 
            Return Utility.GetSiteRoot()

        End Function
        ''' <summary>
        ''' Rewrites an internal url like Product.aspx?id=1 to a nicely formatted URL 
        ''' that can be used for site navigation. These rules are simple; if you want to
        ''' do more complex rewriting, UrlRewriter.NET is a very nice option.
        ''' </summary>
        ''' <param name="pageTo">This is a page where the request is going</param>
        ''' <param name="paramValue">The querystring param value, usually the ID</param>
        ''' <returns></returns>
        Public Shared Function GetRewriterUrl(ByVal pageTo As String, ByVal paramValue As String, ByVal extendedQString As String) As String
            Dim sOut As String = ""
            Try
                paramValue = paramValue.ToLower().Replace(" ", "")
                If Not extendedQString = "" Then
                    extendedQString = "?" & extendedQString
                End If

            Catch

            End Try
            If pageTo.ToLower().Contains("catalog") Then
                'for the catalog, the name is passed along as a page
                sOut = Utility.GetSiteRoot() & "/catalog/" & paramValue & ".aspx" & extendedQString
            ElseIf pageTo.ToLower().Contains("product") Then
                'for the product, the sku is passed along
                sOut = Utility.GetSiteRoot() & "/product/" & paramValue & ".aspx" & extendedQString

            End If
            Return sOut
        End Function

        Public Shared Function ParseCamelToProper(ByVal sIn As String) As String

            Dim letters As Char() = sIn.ToCharArray()
            Dim sOut As String = ""
            For Each c As Char In letters
                If c.ToString() <> c.ToString().ToLower() Then
                    'it's uppercase, add a space
                    sOut &= " " & c.ToString()
                Else
                    sOut &= c.ToString()

                End If
            Next c
            Return sOut
        End Function

        Public Shared Function MaskCreditCard(ByVal cardNumber As String) As String
            If String.IsNullOrEmpty(cardNumber) Then
                Return String.Empty
            End If
            Dim lastFour As String = "XXXX"
            If cardNumber.Length > 4 Then
                'get the last 4 digits
                lastFour = cardNumber.Substring(cardNumber.Length - 4, 4)
            Else

            End If
            Dim ccNumReplaced As String = ""
            Dim i As Integer = 0
            Do While i < cardNumber.Length - 4
                ccNumReplaced &= "X"
                i += 1
            Loop
            ccNumReplaced &= lastFour
            Return ccNumReplaced
        End Function

        Public Shared Function StringToEnum(ByVal t As Type, ByVal Value As String) As Object
            Dim oOut As Object = Nothing
            For Each fi As System.Reflection.FieldInfo In t.GetFields()
                If fi.Name.ToLower() = Value.ToLower() Then
                    oOut = fi.GetValue(Nothing)
                End If
            Next fi
            Return oOut
        End Function

        Public Shared Function GetRandomString() As String
            Dim builder As StringBuilder = New StringBuilder()
            builder.Append(RandomString(4, False))
            builder.Append(RandomInt(1000, 9999))
            builder.Append(RandomString(2, False))
            Return builder.ToString()
        End Function
        Public Shared Function RandomInt(ByVal min As Integer, ByVal max As Integer) As Integer
            Dim random As Random = New Random()
            Return random.Next(min, max)
        End Function
        Public Shared Function RandomString(ByVal size As Integer, ByVal lowerCase As Boolean) As String
            Dim builder As StringBuilder = New StringBuilder()
            Dim random As Random = New Random()
            Dim ch As Char
            Dim i As Integer = 0
            Do While i < size
                ch = Convert.ToChar(Convert.ToInt32(26 * random.NextDouble() + 65))
                builder.Append(ch)
                i += 1
            Loop
            If lowerCase Then
                Return builder.ToString().ToLower()
            End If
            Return builder.ToString()
        End Function
        Public Shared Function GetSiteRoot() As String
            Dim Port As String = System.Web.HttpContext.Current.Request.ServerVariables("SERVER_PORT")
            If Port Is Nothing OrElse Port = "80" OrElse Port = "443" Then
                Port = ""
            Else
                Port = ":" & Port
            End If

            Dim Protocol As String = System.Web.HttpContext.Current.Request.ServerVariables("SERVER_PORT_SECURE")
            If Protocol = Nothing OrElse Protocol = "0" Then
                Protocol = "http://"
            Else
                Protocol = "https://"
            End If

            Dim appPath As String = System.Web.HttpContext.Current.Request.ApplicationPath
            If appPath = "/" Then
                appPath = ""
            End If

            Dim sOut As String = Protocol & System.Web.HttpContext.Current.Request.ServerVariables("SERVER_NAME") & Port & appPath
            Return sOut
        End Function

        Public Shared Function GetParameter(ByVal sParam As String) As String

            If Not System.Web.HttpContext.Current.Request.QueryString(sParam) Is Nothing Then
                Return System.Web.HttpContext.Current.Request(sParam).ToString()
            Else
                Return ""
            End If

        End Function
        Public Shared Function GetIntParameter(ByVal sParam As String) As Integer
            Dim iOut As Integer = 0
            If Not System.Web.HttpContext.Current.Request.QueryString(sParam) Is Nothing Then
                Dim sOut As String = System.Web.HttpContext.Current.Request(sParam).ToString()
                If (Not String.IsNullOrEmpty(sOut)) Then
                    Integer.TryParse(sOut, iOut)
                End If
            End If
            Return iOut
        End Function
        Public Shared Function ShortenText(ByVal sIn As Object, ByVal length As Integer) As String
            Dim sOut As String = sIn.ToString()
            If sOut.Length > length Then
                sOut = sOut.Substring(0, length) & " ..."
            End If
            Return sOut

        End Function
        Public Shared Sub LoadDropDown(ByVal ddl As DropDownList, ByVal collection As ICollection, ByVal textField As String, ByVal valueField As String, ByVal initialSelection As String)
            ddl.DataSource = collection
            ddl.DataTextField = textField
            ddl.DataValueField = valueField
            ddl.DataBind()

            ddl.SelectedValue = initialSelection
        End Sub
        Public Shared Sub LoadListItems(ByVal list As System.Web.UI.WebControls.ListItemCollection, ByVal tblBind As DataTable, ByVal tblVals As DataTable, ByVal textField As String, ByVal valField As String)
            Dim l As ListItem
            Dim i As Integer = 0
            Do While i < tblBind.Rows.Count
                l = New ListItem(tblBind.Rows(i)(textField).ToString(), tblBind.Rows(i)(valField).ToString())

                Dim dr As DataRow
                Dim x As Integer = 0
                Do While x < tblVals.Rows.Count
                    dr = tblVals.Rows(x)
                    If dr(valField).ToString().ToLower().Equals(l.Value.ToLower()) Then
                        l.Selected = True
                    End If
                    x += 1
                Loop
                list.Add(l)
                i += 1
            Loop


        End Sub
        Public Shared Sub LoadListItems(ByVal list As System.Web.UI.WebControls.ListItemCollection, ByVal rdr As IDataReader, ByVal textField As String, ByVal valField As String, ByVal selectedValue As String, ByVal closeReader As Boolean)
            Dim l As ListItem
            Dim sText As String = ""
            Dim sVal As String = ""
            list.Clear()

            Do While rdr.Read()

                sText = rdr(textField).ToString()
                sVal = rdr(valField).ToString()

                l = New ListItem(sText, sVal)
                If Not selectedValue Is String.Empty Then
                    If selectedValue.ToLower() = sVal.ToLower() Then
                        l.Selected = True
                    End If
                End If
                list.Add(l)
            Loop
            If closeReader Then
                rdr.Close()
            End If

        End Sub



        Public Shared Function GetFileText(ByVal virtualPath As String) As String
            'Read from file
            Dim sr As StreamReader = Nothing
            Try
                sr = New StreamReader(System.Web.HttpContext.Current.Server.MapPath(virtualPath))
            Catch
                sr = New StreamReader(virtualPath)

            End Try
            Dim strOut As String = sr.ReadToEnd()
            sr.Close()
            Return strOut
        End Function
        ''' <summary>
        ''' Updates the text in a file with the passed in values
        ''' </summary>
        ''' <param name="AbsoluteFilePath"></param>
        ''' <param name="LookFor"></param>
        ''' <param name="ReplaceWith"></param>
        Public Shared Sub UpdateFileText(ByVal AbsoluteFilePath As String, ByVal LookFor As String, ByVal ReplaceWith As String)
            Dim sIn As String = GetFileText(AbsoluteFilePath)
            Dim sOut As String = sIn.Replace(LookFor, ReplaceWith)
            WriteToFile(AbsoluteFilePath, sOut)
        End Sub
        ''' <summary>
        ''' Writes out a file
        ''' </summary>
        ''' <param name="AbsoluteFilePath"></param>
        ''' <param name="fileText"></param>
        Public Shared Sub WriteToFile(ByVal AbsoluteFilePath As String, ByVal fileText As String)
            Dim sw As StreamWriter = New StreamWriter(AbsoluteFilePath, False)
            sw.Write(fileText)
            sw.Close()

        End Sub
        Public Shared Sub SetListSelection(ByVal lc As System.Web.UI.WebControls.ListItemCollection, ByVal Selection As String)

            Dim i As Integer = 0
            Do While i < lc.Count
                If lc(i).Value = Selection Then
                    lc(i).Selected = True
                    Exit Do
                End If

                i += 1

⌨️ 快捷键说明

复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?