私は .net Framework と MVC プログラミングの哲学全体にかなり慣れていません。コントローラーが C# を使用してサイトと対話する方法を明確にして、基本的な説明を教えてもらえますか? C# でコーディングする方法と、フレームワークのいくつかの側面を理解していますが、それらがどのように結びついているのかわかりません。
4 に答える
モデル- ある種のオブジェクト (通常は 1 つ) を表すデータ構造です。その目的は、アプリケーションの状態を永続化する目的で、基になるオブジェクトへのアクセスを読み取り、書き込み、および管理することです。
ビュー- おそらくモデルを使用して、視覚的なインターフェイスをユーザーに表示するために使用されるコンポーネントです。それは単純な表かもしれませんし、完全な Web ページへの複雑な組み合わせかもしれません。
コントローラー- ビューとモデルの間に位置する、ユーザー主導のアプリケーション ロジック レイヤーです。ユーザーの操作を処理し、モデルをロードし、ビューをユーザーに送信します。ユーザーの要求に応じて、ビューに送信されるモデルを決定します。
アプリケーションの全体的なフォルダー構造は、次のようになります。
>> Website
>> Controllers
>> Models
>> Views
C# MVC では、各コントローラーの名前にサフィックスが必要です。それらはコントローラー クラスを拡張し、views フォルダーにController
名前プレフィックス (.) のフォルダーを持たなければなりません。Controller
このフォルダーには、コントローラーの特定のアクションに関連するすべてのビューが含まれます。
コントローラーには、パブリック関数として定義された任意の数のアクションを含めることができます。デフォルトでは、コントローラ アクションから結果を返す場合、ビューの名前はアクションの名前と一致している必要があります。ただし、ビューを名前で指定することもできます。コントローラーからビューをロードする場合、オブジェクトをモデルとしてビューに送信し、そのコンテンツを生成することができます。
コントローラはあらゆるモデルをロードでき、いかなる制限もありません。
Account
action で以下のように定義されたコントローラーLogin
。コントローラーはフォルダー内のAccountController.cs
ファイルに配置され、/Controllers
このコントローラーのビュー (Login
この例では filename Login.cshtml
) は/Views/Account
フォルダーに配置されます。
注: データをリンクするためにコントローラーとビューの間で名前が使用されるため、命名規則は正しくなければなりません。
public class AccountController : Controller
{
public ActionResult Login(string returnUrl)
{
if (User.Identity.IsAuthenticated)
{
return RedirectToAction("Index","Site");
}
return View("Login", new LogOnModel());
}
}
経由でアクセスできますhttp://www.mysite.com/Account/Login
。ユーザーが認証されている場合、コントローラーはメイン サイト コントローラーにリダイレクトされます。ユーザーがログインしていない場合は、指定されたLogin
ものからデータをロードするビューが表示LogOnModel
されます。
これは実際に可能なことの表面に触れているだけです。ScottGu によるいくつかの優れた記事に関するオンライン情報を読んでください。MVC の使用方法についてより深く掘り下げて説明しています。
ASP.NET MVC フレームワークの使い方 - パート 1 //パート 2 //パート 3 //パート 4
注 : これらの記事は 2007 年に MVC バージョン 1 用に書かれたものであるため、少し古くなっていますが、モデル、ビュー、およびコントローラーがどのように相互作用するかという概念は引き続き適用されます。
コントローラーは、内部 Web サービスとして機能します。サーバー側のコードをビューに公開し、コントローラーを呼び出せるようにします。パターンに関しては、ほとんどの人は、コントローラーはできるだけ薄くすべきだと考えています。重労働やその他のビジネス ロジックがある場合は、アプリケーションの別の部分に抽象化する必要があります。私の目には、コントローラーはビューに呼び出すものを提供し、そのデータが text/html、json、または xml のいずれであるかを返すために存在します。
ソースから直接、非常に豊富な情報があります:http://www.asp.net/mvc/mvc4
特にこのサイトでは、チュートリアルを強くお勧めします。モデル、ビュー、およびコントローラーがどのように相互作用し、相互に依存しているかをより明確に把握できます。 http://www.asp.net/mvc/tutorials/mvc-4/getting-started-with-aspnet-mvc4/intro-to-aspnet-mvc-4
コントローラーはメソッドを持つクラスであり、これらのメソッドはアクションと呼ばれ、それらのアクションを「ビュー」(cshtml ファイル) にアタッチします。
//This is your controller
public class HomeController : Controller
{
// This is your action
public ActionResult Index()
{
return View();
}
}
「インデックス」アクションを右クリックして「ビューの追加...」を選択すると、そのアクションにアタッチされた新しいビューが作成されます。
そのビューにアクセスするには、次のようにします: localhost/Controller/Action この場合、次のようにする必要があります: localhost/Home/Index ここで、Home = Controller、Index = Action
MVC パターンについて読む必要があります
Microsoft には、初心者向けの非常に優れたチュートリアルがあります。
ASP.NET MVC のコントローラーは、要求に応じてアプリのロジックを処理するオブジェクトです。これはリクエスト (HTTP リクエストなど) ごとに作成され、View レイヤーによってレスポンスが作成されるまで使用できます。その後、それは使用不可能なオブジェクトになり (そしてすぐに GC が割り当てられたメモリを解放します)、別の要求のために新しいコントローラー オブジェクトを作成する必要があります。
この定義により、軽量である必要がある理由と、どのように使用する必要があるかが明確になると思います。