美文网首页
使用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