<ruby id="bdb3f"></ruby>

    <p id="bdb3f"><cite id="bdb3f"></cite></p>

      <p id="bdb3f"><cite id="bdb3f"><th id="bdb3f"></th></cite></p><p id="bdb3f"></p>
        <p id="bdb3f"><cite id="bdb3f"></cite></p>

          <pre id="bdb3f"></pre>
          <pre id="bdb3f"><del id="bdb3f"><thead id="bdb3f"></thead></del></pre>

          <ruby id="bdb3f"><mark id="bdb3f"></mark></ruby><ruby id="bdb3f"></ruby>
          <pre id="bdb3f"><pre id="bdb3f"><mark id="bdb3f"></mark></pre></pre><output id="bdb3f"></output><p id="bdb3f"></p><p id="bdb3f"></p>

          <pre id="bdb3f"><del id="bdb3f"><progress id="bdb3f"></progress></del></pre>

                <ruby id="bdb3f"></ruby>

                ??碼云GVP開源項目 12k star Uniapp+ElementUI 功能強大 支持多語言、二開方便! 廣告
                # ASP.NET MVC 5 - 控制器 MVC代表: _模型__-__視圖__-__控制器_ 。MVC是一個架構良好并且易于測試和易于維護的開發模式。基于MVC模式的應用程序包含: · **M**odels: 表示該應用程序的數據并使用驗證邏輯來強制實施業務規則的**數據類**。 · **V**iews: 應用程序動態生成 HTML所使用的模板文件。 · **C**ontrollers: 處理瀏覽器的請求,取得數據模型,然后指定要響應瀏覽器請求的視圖模板。 本系列教程,我們將覆蓋所有這些概念,并告訴您如何在ASP.NET MVC 5中使用它們來構建應用程序。 首先,讓我們創建一個控制器類。在**解決方案資源管理器中**,用鼠標右鍵單擊控制器文件夾(_Controllers_ ),然后選擇“**添加控制器“**。 ![](https://box.kancloud.cn/2016-01-02_568736b336a5c.jpg) 在添加**Scaffold**對話框,單擊**MVC5****控制器** **-** **空**,然后單擊“**添加**”。 ![](https://box.kancloud.cn/2016-01-02_568736b34d3bd.gif) 命名新的控制器為“HelloWorldController”,并單擊“ 添加“。 ![](https://box.kancloud.cn/2016-01-02_568736b3668d3.gif) 請注意,在**解決方案資源管理器中**會創建一個名為_HelloWorldController.cs_的新文件和一個新的文件夾_Views\HelloWorld_。該文件會被IDE默認打開。 ![](https://box.kancloud.cn/2016-01-02_568736b37bece.gif) 用下面的代碼替換該文件中的內容。 ``` using System.Web; using System.Web.Mvc; namespace MvcMovie.Controllers { public class HelloWorldController : Controller { // // GET: /HelloWorld/ public string Index() { return "This is my <b>default</b> action..."; } // // GET: /HelloWorld/Welcome/ public string Welcome() { return "This is the Welcome action method..."; } } } ``` 在這個例子中控制器方法將返回一個字符串的HTML。本控制器被命名HelloWorldController代碼中的第一種方法被命名為Index。讓我們從瀏覽器中調用它。運行應用程序(按F5或CTRL + F5)。在瀏覽器的地址欄中輸入路徑“HelloWorld“。(例如,在下面的示例中: [http://localhost:1234/HelloWorld](http://localhost:1234/HelloWorld))頁面在瀏覽器中的表現如下面的截圖。在上面的方法中,代碼直接返回了一個字符串。你告訴系統只返回一些HTML,系統確實這樣做了! ![](https://box.kancloud.cn/2016-01-02_568736b38d2cc.jpg) ASP.NET MVC會調用不同的控制器類(和其內部不同的操作方法)這取決于傳入URL。所使用的ASP.NET MVC的默認URL路由邏輯使用這樣的格式來判定哪些代碼以便調用: /[Controller]/[ActionName]/[Parameters] 你也可在_App_Start/RouteConfig.cs_ 文件內通過配置URL路由解析規則: ``` public static void RegisterRoutes(RouteCollection routes) { routes.IgnoreRoute("{resource}.axd/{*pathInfo}"); routes.MapRoute( name: "Default", url: "{controller}/{action}/{id}", defaults: new { controller = "Home", action = "Index", id = UrlParameter.Optional } ); } ``` 如果您運行應用程序并沒有提供任何URL段的,默認為“Home”的控制器和“Index”的操作方法,在上面的代碼中的defaults部分指定的: * 第一部分的URL確定哪個控制器類會被執行。因此 _/HelloWorld_映射到HelloWorldController控制器類。 * 第二部分的URL確定要執行控制器類中的那個操作方法。因此 _/HelloWorld/__Index__,_會使得`HelloWorldController`控制器類的Index 方法被執行。請注意,我們只需要瀏覽 _/HelloWorld_路徑,默認情況下會調用Index方法。如果沒有明確的指定操作方法,Index方法會默認的被控制器類調用。 * 第三部分的URL段(Parameters參數)是路由數據。在本教程中,稍后我們將看到路由數據。 瀏覽_http://localhost:xxxx/HelloWorld/Welcome。_Welcome方法會被運行并返回字符串:"This is the Welcome action method...”。 默認的MVC映射為/[Controller]/[ActionName]/[Parameters] 對于這個URL,控制器類是HelloWorld,操作方法是Welcome,您還沒有使用過URL的[Parameters] 部分。 ![](https://box.kancloud.cn/2016-01-02_568736b3a09b1.png) 讓我們稍微修改一下這個例子,以便可以使用URL傳遞一些參數信息給控制器類(例如, _/HelloWorld/Welcome?name=Scott&numtimes=4_)。改變您的Welcome 方法來包含兩個參數,如下所示。需要注意的是,示例代碼使用了C#語言的可選參數功能,numTimes參數在不傳值時,默認值為1。 ``` public string Welcome(string name, int numTimes = 1) { return HttpUtility.HtmlEncode("Hello " + name + ", NumTimes is: " + numTimes); } ``` 安全注意事項: 上面的代碼使用了 HttpServerUtility.HtmlEncode 來保護應用從malacious輸入的(也就是JavaScript).? 有關詳細信息,請參閱How to: Protect Against Script Exploits in a Web Application by Applying HTML Encoding to Strings. 運行您的應用程序并瀏覽此URL(_http://localhost:xxxx/HelloWorld/Welcome?name=Scott&numtimes=4__)_。你可以對參數name 和numtimes 嘗試不同的值。 [ASP.NET MVC model binding system](http://odetocode.com/Blogs/scott/archive/2009/04/27/6-tips-for-asp-net-mvc-model-binding.aspx) 會自動將地址欄中URL里的 query string映射到您方法中的參數。 ![](https://box.kancloud.cn/2016-01-02_568736b3b96c9.jpg) 上面的例子,沒有用到URL段參數的部分( Parameters)。 通過[query strings](http://en.wikipedia.org/wiki/Query_string)傳遞name 和 numTimes的參數. 用下面的代碼替換“Welcome”的方法: ``` public string Welcome(string name, int ID = 1) { return HttpUtility.HtmlEncode("Hello " + name + ", ID: " + ID); } ``` 運行應用程序并輸入以下網址URL: _http://localhost:xxx/HelloWorld/Welcome/3?name=Rick_ ![](https://box.kancloud.cn/2016-01-02_568736b3cdf37.gif) 這次URL第三部分的參數匹配了參數ID。 通過查看下面的RegisterRoutes路由規則函數: ``` public static void RegisterRoutes(RouteCollection routes) { routes.IgnoreRoute("{resource}.axd/{*pathInfo}"); routes.MapRoute( name: "Default", url: "{controller}/{action}/{id}", defaults: new { controller = "Home", action = "Index", id = UrlParameter.Optional } ); } ``` 在ASP.NET MVC應用程序,通過參數傳遞路由數據是為更典型的應用(如同上面用query string傳遞 ID參數)。您還可以增加一條路由來傳遞name 和numtimes ,在路由數據在URL中的參數。在_App_Start\RouteConfig.cs_? file文件中,添加“Hello”的的路由: ``` public class RouteConfig{ public static void RegisterRoutes(RouteCollection routes) { routes.IgnoreRoute("{resource}.axd/{*pathInfo}"); routes.MapRoute( name: "Default", url: "{controller}/{action}/{id}", defaults: new { controller = "Home", action = "Index", id = UrlParameter.Optional } ); routes.MapRoute( name: "Hello", url: "{controller}/{action}/{name}/{id}" ); } } ``` 運用應用程序,在瀏覽器輸入:/localhost:XXX/HelloWorld/Welcome/Scott/3. ![](https://box.kancloud.cn/2016-01-02_568736b3dfb2a.gif) 對于眾多MVC應用程序的缺省默認的路由可以正常工作。稍后您將學習本教程中通過使用模型綁定的數據,你就不必修改缺省的路由。 在上面的例子中,控制器一直在做著MVC中“VC”部分的職能:也就是視圖和控制器的工作。該控制器直接返回HTML內容。通常情況下,您不會讓控制器直接返回HTML,因為這樣代碼會變得非常的繁瑣。相反,我們通常會使用一個單獨的視圖模板文件來幫助生成返回的HTML。讓我們來看看下面我們如何能做到這一點吧。
                  <ruby id="bdb3f"></ruby>

                  <p id="bdb3f"><cite id="bdb3f"></cite></p>

                    <p id="bdb3f"><cite id="bdb3f"><th id="bdb3f"></th></cite></p><p id="bdb3f"></p>
                      <p id="bdb3f"><cite id="bdb3f"></cite></p>

                        <pre id="bdb3f"></pre>
                        <pre id="bdb3f"><del id="bdb3f"><thead id="bdb3f"></thead></del></pre>

                        <ruby id="bdb3f"><mark id="bdb3f"></mark></ruby><ruby id="bdb3f"></ruby>
                        <pre id="bdb3f"><pre id="bdb3f"><mark id="bdb3f"></mark></pre></pre><output id="bdb3f"></output><p id="bdb3f"></p><p id="bdb3f"></p>

                        <pre id="bdb3f"><del id="bdb3f"><progress id="bdb3f"></progress></del></pre>

                              <ruby id="bdb3f"></ruby>

                              哎呀哎呀视频在线观看