空のWebサイトテンプレートとC#言語でVisual StudioのMVC JSONコントローラーを使用する

この記事では、Visual Studio 2010でのMVC3ライブラリの接続に焦点を当てます。ただし、ASP.NET MVC3 Webアプリケーションプロジェクトテンプレートは使用せず、空のWebサイトテンプレートに基づいてWebサイト(Webサイト)を作成し、ゼロから食べる。 ライブラリを空のWebサイトに接続します。 Webサイト用のMVCテンプレートはありません。

記事の最後に、MVCライブラリに基づくJSONコントローラーが実装されます。

写真で説明しますが、挿入されていません。 したがって、言葉で説明します。



背景



最近、Visual StudioでのMVCの実装に興味がありました。 インターネット、特にハブには、その使用方法に関する記事が多数ありますが、約20の指示を確認した結果、それらはすべてASP.NET MVC3 Webアプリケーションテンプレートのみに基づいていることがわかりました。 ほとんどの手順の最初の2つの手順は次のとおりです。

  1. MVC3をダウンロードしてインストールします。
  2. アイテムを選択:

    ファイル->新規->プロジェクト...->インストール済みテンプレート-> Visual C#-> Web->「ASP.NET MVC3 Webアプリケーション」-> OK
しかし、「Webアプリケーション」ではなく「Webサイト」を作成したい場合はどうでしょう。 次に、次のメニュー項目をクリックします。

ファイル->新規-> Webサイト->インストール済みテンプレート-> Visual C#

そして、彼はこのMVC3がどこにあるかを検索します:「ちょうどダウンロードしてインストールしました。」

よく見ると、MVC3はインストールされていませんでした。新しいテンプレート「ASP.NET Web Site(Razor)」が表示されました。 Razorは確かにクールですが、MVCは含まれていません。

そのため、WebサイトにはMVCプロジェクトがないことがわかりました。

さらに、「ASP.NET MVC3 Web Application」テンプレートはあまりにも多く含まれているため、特に好きではありませんでした。 必要なライブラリをそこに含めてディレクトリ構造を作成すれば十分です。 プロジェクトの内容を管理する方が便利です。

そのため、「空のWebサイト」テンプレートに基づいてゼロからMVCプロジェクトを作成する方が簡単でした。

「Webサイト」または「Webアプリケーション」を使用する方が良いという詳細には触れません。 正直に言って、彼らの長所と短所を完全に表明しているかどうかはわかりません。 しかし、そうかもしれませんが、Visual Studioには新しいプロジェクト「Webサイト」のバージョンがあります。 したがって、それが使用されます。 したがって、誰かがそれに基づいてMVCを使用したいと思うでしょう。

私を悩ませた唯一のことは、「ASP.NET MVC3 Webアプリケーション」テンプレートに、「Webサイト」プロジェクトでは実現できなかった機能がいくつかあったことです。

著者が単にそれらを無視する記事に出くわすまで、私はこれらの欠陥を修正するのにいくらか時間を費やしました。 したがって、これら2つのポイントの実装は非常にコストのかかるプロセスになると判断しました。



まえがき



実際には、すべての基本事項をここで概説します

インターネット上の既存の記事を複製しないために、IISサーバーの起動方法、MVC3のインストール方法、およびその使用方法については説明しません。

MVCライブラリーを空のプロジェクトに追加し、ルートを作成し、結果をJSON形式で出力するコントローラーを追加する方法について簡単に説明します。 つまり、「Webサイト」プロジェクトでMVCの機能を使用できるようにするための最小値が考慮されます。

プロジェクトはローカルIISサーバーに配置されることを前提としています。



プロジェクト作成



  1. MVC3をダウンロードしてインストールします。
  2. プロジェクトを作成する前に、IISサーバーを起動する必要があります。 そこで新しいサイトを作成します。 hostsファイルに登録します。
  3. Visual Studioを管理者として開きます(それ以外の場合、Visual StudioはIISサーバーでプロジェクトをホストおよび編集したくないでしょう)。
  4. [ファイル]-> [新規]-> [Webサイト]-> [インストールされたテンプレート]-> [Visual C#]-> [空のWebサイト]を選択します。
  5. .NET Framework 4の選択
  6. Webロケーションの選択:HTTP
  7. サイトにURLを登録し、[OK]をクリックします


プロジェクトのセットアップ



「ソリューションエクスプローラー」を開きます。 最初は、プロジェクトにweb.configというファイルが1つだけあります。

Global.asaxファイルを追加します。これにより、サイトへのすべてのリクエストが処理されます。

ソリューションエクスプローラーでプロジェクトを右クリックします。 次に、アイテム「新しいアイテムを追加...」。 「グローバルアプリケーションクラス」を選択します。

MVC 3ライブラリを使用するため、プロジェクトに追加します。

「ソリューションエクスプローラー」でプロジェクトのボタンをクリックします。 次に、項目「参照の追加...」。 System.Web.Mvcバージョン3を見つけて追加します。

web.configを開くと、登録されたことがそこにあることがわかります。 このライブラリをWebフォームおよびGlobal.asaxファイルで使用できるようにするには、次のコードを「system.web」タグに追加します。

<pages> <namespaces> <add namespace="System.Web.Mvc"/> <add namespace="System.Web.Routing"/> </namespaces> </pages>
      
      





ルート設定



Global.asaxを開き、次のコードをApplication_Start()関数に貼り付けます。

  AreaRegistration.RegisterAllAreas(); RouteTable.Routes.IgnoreRoute("{resource}.axd/{*pathInfo}"); RouteTable.Routes.MapRoute( "Default", "{controller}/{action}" );
      
      





ここで重要なのは、URLでクラスの名前を{controller}の場所に記述する必要があることですが、「Controller」という単語はなく、{action}の代わりにクラスメソッドです。

つまり、URL = "http://site.com/Employeer/List"の場合、EmployeerControllerクラスのListメソッドが呼び出されます。



コントローラー作成



App_Codeクラスのディレクトリを追加します。

ソリューションエクスプローラーでプロジェクトを右クリックします。 次に、「ASP.NETフォルダの追加」アイテム。 「App_Code」を選択します。

クラスEmployeeController.csをこのディレクトリに追加します。

コントローラーはSystem.Web.Mvc.Controllerクラスを継承する必要があります。

 using System; using System.Collections.Generic; using System.Linq; using System.Web; using System.Web.Mvc; public class EmployeeController:Controller{ public ActionResult List() { return Json(new {ID=123,Name="Name1" }); } }
      
      





コントローラーの起動



さて、すべてが正しく行われ、ブラウザで「http://site.com/Employeer/List」のようなアドレスを入力すると、サーバーはエラーをスローするはずです。

このリクエストは、GETリクエストで使用されると、機密情報がサードパーティのWebサイトに開示される可能性があるため、ブロックされています。 GETリクエストを許可するには、JsonRequestBehaviorをAllowGetに設定します。

これは、jsonデータが現在のサイトからのみ表示されるように、ある程度の保護があることを意味します。 この保護を無効にできます。

 public class EmployeeController:Controller{ public ActionResult List() { return new JsonResult { new {ID=123,Name="Name1" } , JsonRequestBehavior = JsonRequestBehavior.AllowGet }; } }
      
      





ただし、この保護を無効にせずに、同じサイトからのリクエストであることをサーバーに知らせる方が良いでしょう。

これを行うには、index.htmlページを作成し、jsフォルダーにjquery.jsを追加し、jqueryを使用してajaxリクエストを実行します。

Index.html:

 <html> <head> <script src=" /js/jquery.js" type="text/javascript"></script> </head> <body> ddddfsf <script type="text/javascript"> $(function(){ $.ajax({ type: "POST", contentType: "application/json; charset=utf-8", dataType: 'json', url: " /Employee/List", success: function(data) {alert(data.ID+","+data.Name);} }); }); </script> </body> </html>
      
      





これで、ブラウザにサイトアドレスを入力すると、サーバーはindex.htmlページを表示し、オブジェクトの値を含むウィンドウが画面に表示されます。



おわりに



この記事がWebサイトでMVCライブラリを使用することを決めた人に役立つことを願っています。また、プロジェクトを作成するときに誰かが時間を節約するかもしれません。



All Articles