美文网首页
使用Visual Basic开始使用ASP.NET MVC 5-

使用Visual Basic开始使用ASP.NET MVC 5-

作者: 大华日记 | 来源:发表于2018-07-10 15:41 被阅读32次

    2.添加控制器

    MVC代表 模型 - 视图 - 控制器。MVC是一种用于开发构建良好,可测试且易于维护的应用程序的模式。基于MVC的应用程序包含:

    • 模型:表示应用程序数据并使用验证逻辑强制执行该数据业务规则的类。
    • V IEWS:您的应用程序使用动态生成HTML响应模板文件。
    • Ç ontrollers:用来处理传入浏览器请求的类,检索模型数据,然后指定返回到浏览器的响应视图模板。

    我们将在本系列教程中介绍所有这些概念,并向您展示如何使用它们来构建应用程序。

    让我们从创建控制器类开始。在 Solution Explorer中,右键单击 Controllers 文件夹,然后单击Add,再 单击 Controller

    添加控制器

    在“ 添加脚手架” 对话框中,单击“ MVC 5控制器 - 空”,然后单击“ 添加”

    添加控制器

    将新控件命名为“HelloWorldController”,然后单击“ 添加”

    添加控制器

    请注意,在 解决方案资源管理器中 ,已创建一个名为 HelloWorldController.vb 的新文件和一个新文件夹Views \ HelloWorld。控制器在IDE中打开。

    添加控制器

    使用以下代码替换文件的内容。

    Imports System.Web.Mvc
    
    Public Class HelloWorldController
        Inherits Controller
    
        ' GET: /HelloWorld
        Function Index() As String
            Return "This is my <b>default</b> action..."
        End Function
    
        'GET: /HelloWorld/Welcome/
        Function Welcome() As String
            Return "This is the Welcome action method..."
        End Function
    End Class
    

    控制器方法将返回一个HTML字符串作为示例。控制器名为HelloWorldController,第一个方法名为Index。我们从浏览器调用它。运行应用程序(按F5或Ctrl + F5)。在浏览器中,将“HelloWorld”附加到地址栏中的路径。(例如,在下图中,它是 http:// localhost:1804 / HelloWorld。)浏览器中的页面将如下面的屏幕截图所示。在上面的方法中,代码直接返回一个字符串。你告诉系统只返回一些HTML,它确实做到了!

    添加控制器

    ASP.NET MVC根据传入的URL调用不同的控制器类(以及其中的不同操作方法)。ASP.NET MVC使用的默认URL路由逻辑使用这样的格式来确定要调用的代码:

    /[Controller]/[ActionName]/[Parameters]

    您可以在*App_Start / RouteConfig.vb * 文件中设置路由格式 。

    Public Module RouteConfig
        Public Sub RegisterRoutes(ByVal routes As RouteCollection)
            routes.IgnoreRoute("{resource}.axd/{*pathInfo}")
    
            routes.MapRoute(
                name:="Default",
                url:="{controller}/{action}/{id}",
                defaults:=New With {.controller = "Home", .action = "Index", .id = UrlParameter.Optional}
            )
        End Sub
    End Module
    

    正斜杠(/)是一个段分隔符。当您运行应用程序并且不提供任何URL段时,它默认为“Home”控制器和 上面代码的defaults部分中指定的“Index”操作方法。

    URL中的第一个段确定要执行的控制器类。所以 / HelloWorld 映射到 HelloWorldController 类。第二个段确定要执行的类的操作方法。所以 / HelloWorld / Index 会导致HelloWorldController 类的 Index 方法 执行。请注意,我们只需要浏览到 / HelloWorld , 默认情况下使用Index方法。这是因为名为Index的方法 被指定为将在控制器上调用的默认方法(如果未明确指定)。URL的第三段(参数)用于路线数据。我们稍后将在本教程中看到路由数据。

    浏览到 http:// localhost:xxxx / HelloWorld / Welcome。Welcome方法运行并返回字符串“This is the Welcome action method ...”。默认的MVC映射是 / [Controller] / [ActionName] / [Parameters]。对于此URL,控制器是 HelloWorld , Welcome 是操作方法。您还没有使用 过URL 的 [Parameters]部分。

    添加控制器

    让我们稍微修改一下这个例子,这样你就可以将一些参数信息从URL传递给控制器​​(例如, / HelloWorld / Welcome?name = Mike&numtimes = 4)。更改Welcome方法以包含两个参数,如下所示。请注意, 如果没有为该参数传递值,则代码使用VB可选参数功能指示numTimes参数应默认为1。

    Function Welcome(name As String, Optional numTimes As Integer = 1) As String
        Return HttpUtility.HtmlEncode("Hello " & name & ", NumTimes is: " & numTimes)
    End Function
    

    安全性注意:上面的代码使用 HttpServerUtility.HtmlEncode 来保护应用程序免受恶意输入(即JavaScript)。有关更多信息,请参阅 如何:通过将HTML编码应用于字符串来防止Web应用程序中的脚本漏洞

    运行您的应用程序并浏览到示例URL(http:// localhost:xxxx / HelloWorld / Welcome?name = Mike&numtimes = 4)。您可以 在URL中尝试不同的名称 和 numtimes值 。在 ASP.NET MVC模型绑定系统 自动从URL查询字符串中的命名参数映射到方法参数。

    添加控制器

    在上面的示例中,未使用URL段(参数), name 和 numTimes 参数作为查询字符串值传递 。的?上述URL中的(问号)是分隔符,后面是查询字符串。&字符分隔查询字符串中的名称/值对。

    使用以下代码替换Welcome方法:

    Function Welcome(name As String, Optional ID As Integer = 1) As String
        Return HttpUtility.HtmlEncode("Hello " & name & ", ID: " & ID)
    End Function
    

    运行应用程序并输入以下URL: http:// localhost:xxx / HelloWorld / Welcome / 3?name = Mike

    添加控制器

    这次第三个URL段包含一个值(3),因此它与路径参数ID匹配。的 欢迎 动作方法包含一个参数(ID匹配的URL的规范) 的RegisterRoutes 方法。

    Public Module RouteConfig
        Public Sub RegisterRoutes(ByVal routes As RouteCollection)
            routes.IgnoreRoute("{resource}.axd/{*pathInfo}")
    
            routes.MapRoute(
                name:="Default",
                url:="{controller}/{action}/{id}",
                defaults:=New With {.controller = "Home", .action = "Index", .id = UrlParameter.Optional}
            )
        End Sub
    End Module
    

    在ASP.NET MVC应用程序中,将参数作为路径数据传递(就像我们使用上面的ID所做的那样)比将它们作为查询字符串值传递更为典型。您还可以添加路由以将 参数中的名称 和 numtimes作为URL中的路由数据传递 。在 App_Start \ RouteConfig.vb 文件中,添加“Hello”路由:

    Public Module RouteConfig
        Public Sub RegisterRoutes(ByVal routes As RouteCollection)
            routes.IgnoreRoute("{resource}.axd/{*pathInfo}")
    
            routes.MapRoute(
                name:="Default",
                url:="{controller}/{action}/{id}",
                defaults:=New With {.controller = "Home", .action = "Index", .id = UrlParameter.Optional}
            )
    
            routes.MapRoute(
                name:="Hello",
                url:="{controller}/{action}/{name}/{id}"
            )
        End Sub
    End Module
    

    运行应用程序并浏览到 http:// localhost:XXX / HelloWorld / Welcome / Mike / 3

    添加控制器

    对于许多MVC应用程序,默认路由工作正常。您将在本系列教程的后面部分学习使用模型绑定器传递数据,您不必为此修改默认路由。

    在这些示例中,控制器一直在执行MVC的“V”和“C”部分 - 即视图和控制器工作。控制器直接返回HTML。通常,您不希望控制器直接返回HTML,因为编码和管理变得非常麻烦。相反,我们通常会使用单独的视图模板文件来帮助生成HTML响应。下一节将介绍我们如何做到这一点。

    相关文章

      网友评论

          本文标题:使用Visual Basic开始使用ASP.NET MVC 5-

          本文链接:https://www.haomeiwen.com/subject/anafpftx.html