.NET/C# 面接の質問まとめシリーズ: ASP.NET MVC [必要に応じて学習し、改善する]

PS: エディターの街では、ほとんどの ERP および BPMS システムは .NET に基づいて動作し、他の BS 構造システムは基本的に Vue+.NET に基づいており、単一ストレージ用に MVC によって開発されたオファーはほとんどありません (エディターのみ) Boss 『Zhipin』で見られるデータ分析、したがって、この章は適切な学習および改善記事として挙げることができます。

1. MVC の TempData\ViewBag\ViewData の違いは何ですか?

TempData はセッションに保存されます。コントローラーはリクエストを実行するたびに、まずセッションから TempData を取得し、次にセッションをクリアします。TempData データを取得した後、内部辞書オブジェクトに保存されますが、コレクション内の各エントリは一度アクセスするとディクショナリテーブルから削除されますが、ViewDataにはKey/Valueディクショナリが格納されており、使用する際には型変換が必要となります。
ViewBag と ViewData は現在のアクションでのみ有効であり、View と同等です。ViewBag は ViewData よりも低速です。ViewBag は動的型データを格納し、使用時に型変換を必要としません。
ViewData と ViewBag の値は相互にアクセスできます。これは、ViewBag の実装には ViewData が含まれており、ViewData には型変換が必要な Key/Value ディクショナリが格納されているためです。

2. MVC フレームワークの仕組みと各モジュールの役割を説明しますか?

  • いわゆるモデルは、MVC が提供する必要があるデータ ソースであり、データ アクセスとメンテナンスを担当します。
  • いわゆるビューは、モデル内のデータを表示するために使用されるユーザー インターフェイスです。
  • いわゆるコントローラーはユーザー入力を処理するために使用され、モデルの状態を変更し、モデルのデータを表示する適切なビューを選択する役割を果たします。

3. ASP.NET と ASP.NET MVC の関係は何ですか?

System.Web は Asp.NET のコア名前空間であるため、mvc 名前空間 System.Web.Mvc からわかるように、ASP.NET MVC はコア ASP.NET に基づいて構築されています。
たとえば、ASP.NET MVC は HttpHandler に依存しています。リクエストがコントローラーに入る方法に関しては、実際には
MVC で引き続き使用する必要がある ASP.NET オブジェクト ストレージ メカニズムである HttpHandler セッション、Cookie、キャッシュ、およびアプリケーションを使用します。
HttpContext 、Request、Response、および Server オブジェクトは MVC で引き続き使用でき、これらのオブジェクトをコントローラーの Intellisense の形式で簡単に取得できます

4. ASP.NET 向け MVC の利点は何ですか?

  • UI レイヤー、つまりビュー、データ レイヤー モデル、管理レイヤー コントローラーなど、非常に明確なパフォーマンス管理を提供します。
  • 単体テストが簡単になります。
  • データ モデルとビューの再利用性が向上しました。
  • コードの構造がより最適化されています。

5.かみそりビュー エンジンとは何ですか?

このエンジンは、データ バインドされた表示テンプレートを提供します。

 @model MvcStore.Models.Customer
 @{
    
    ViewBag.Title="Get Customers";}
 <div class="cust"><h3><em>@Model.CustomerName</em></h3></div>

6. ビューバッグとビューデータの違いは何ですか?

ビューバッグはビューデータの拡張です。拡張後、動的プロパティを作成できます。これによる利点は次のとおりです。

  1. 型変換は必要ありません。
  2. 動的キーワードを使用できます。
  3. ただし、ビューバッグはビューデータよりも遅いという欠点があります。

7. 各セクションについて説明しますか?

セクションは HTML ページの一部です。

 @rendersection("testsection")

サブページでは、次のセクションを定義します。

 @section testsection {
    
    
 <h1>test content</h1>
 }

このセクションが定義されていない場合、エラーが発生します。必須属性を使用してページ エラーを防ぐことができます。

 @rendersection("testsection", required: false)

8. html.partial を使用する理由は何ですか?

このメソッドは、HTML 文字列で指定された特定のビューを表示するために使用されます。

html.partial("testpartialview")

9. 部分ビューとは何ですか?

部分ビューは従来の Web テーブルのユーザー コントロールに相当します。
その主な目的はこれらのビューを再利用することであり、通常は共有フォルダーに配置されます。

 html.partial()
 html.renderpartial()

10. MVC は Windows アプリケーションと Web アプリケーションの両方に適していますか?

Windows アプリケーションと比較して、MVC アーキテクチャは Web アプリケーションにより適しています。Windows アプリケーションの場合は、MVP (Model View Presenter) アーキテクチャの方が優れています。WPF と Silverlight を使用する場合は、MVVM の方が適しています。

11. MVC でセッションを維持するにはどうすればよいですか?

これは、tempdata、viewdata、viewbag の 3 つの方法で維持できます。

12. すでに ASPX を持っているのに、Razor が必要なのはなぜですか?

ASPX と比較すると、Razor はクリーンで軽量で、構文が単純です。たとえば、時間を表示する ASPX は次のようになります。

<%=DateTime.Now%>

Razor では、必要な行は 1 行だけです。 @DateTime.Now

13. MVC で Windows 認証を実装するにはどうすればよいですか?

web.config ファイルを変更し、認証モードを Windows に設定する必要があります。

 <authentication mode="Windows"/>
 <authorization>
 <deny users="?"/>
 </authorization>

次に、コントローラーまたはアクションで、Authorize 属性を使用して、このコントローラーまたはアクションにアクセスできるユーザーを指定できます。以下のコードは、指定されたユーザーのみがアクセスできるように設定します。

1 [Authorize(Users= @"WIN-3LI600MWLQN\Administrator")]
2 public class StartController : Controller
3 {
    
    
4 //
5 // GET: /Start/
6 [Authorize(Users = @"WIN-3LI600MWLQN\Administrator")]
7 public ActionResult Index()
8 {
    
    
9 return View("MyView");
10 }
11 }

14. MVC でフォーム認証を使用するにはどうすればよいですか?

フォーム認証は、ASP.NET フォーム認証と同じです。最初のステップは、認証モードをフォームに設定することです。loginUrl はページではなくコントローラーを指します。

1 <authentication mode="Forms">
2 <forms loginUrl="~/Home/Login" timeout="2880"/>
3 </authentication>

ユーザーを認証するためのコントローラーも作成する必要があります。検証に合格した場合は、Cookie の値を設定する必要があります。

1 public ActionResult Login()
2 {
    
    
3 if ((Request.Form["txtUserName"] == "Shiv") &&
4 (Request.Form["txtPassword"] == "Shiv@123"))
5 {
    
    
6 FormsAuthentication.SetAuthCookie("Shiv",true);
7 return View("About");
8 }
9 else
10 {
    
    
11 return View("Index");
12 }
13 }

認証が必要なその他のアクションでは、Authorize 属性を追加する必要があります。ユーザーに権限がない場合は、ログイン ページにリダイレクトされます。

1 [Authorize]
2 PublicActionResult Default()
3 {
    
    
4 return View();
5 }
6 [Authorize]
7 publicActionResult About()
8 {
    
    
9 return View();
10 }

15. MVC には何種類の結果タイプがありますか?

注: 12 種類すべてを覚えるのは困難です。ただし、覚えておくとよい重要なものもいくつかあります。たとえば、 ActionResult 、 ViewResult
、 JsonResult です。詳細は次のとおりです。MVC
には 12 の結果タイプがあり、最も重要なものは ActionResult クラスです。これは、次のように 11 のサブタイプを持つ基本クラスです。

  • ViewResult - 指定されたビューを応答ストリームにレンダリングします
  • PartialViewResult - リアクティブ ストリームの指定された部分ビューをレンダリングします。
  • EmptyResult - 空の応答結果を返します。
  • RedirectResult - 指定された URL への HTTP リダイレクトを実行します。
  • RedirectToRouteResult - ルーティング データに基づいてルーティング エンジンによって決定された URL への HTTP リダイレクトを実行します。
  • JsonResult - ViewData オブジェクトを JSON 形式にシリアル化します。
  • JavaScriptResult - クライアント上で実行できる JavaScript コードの一部を返します。
  • ContentResult - コンテンツを応答ストリームに書き込みます。ビューのサポートは必要ありません。
  • FileContentResult - ファイルをクライアントに返します。
  • FileStreamResult - ストリームを提供したクライアントにファイルを返します。
  • FilePathResult - ファイルをクライアントに返します。

16. WebAPIとは何ですか?

HTTP は最も一般的に使用されるプロトコルです。過去何年もの間、ブラウザは HTTP を使用してデータを公開するための好ましいクライアントでした。しかし、日を追うごとに、クライアントはさまざまな形に進化しています。携帯電話、JavaScript、Windows アプリケーションなどのさまざまなクライアントにデータを転送するには、HTTP を使用する必要があります。
WebAPI は HTTP を通じてデータを公開するテクノロジーであり、REST ルールに従います。

17. MVC におけるパッケージ化と圧縮とは何ですか?

パッケージ化と圧縮により、ページのリクエスト時間が短縮され、ページの実行パフォーマンスが向上します。
パッケージングで高いパフォーマンスを実現するにはどうすればよいでしょうか?
私たちのプロジェクトには常に CSS とスクリプト ファイルが必要です。バンドルを使用すると、複数の Javascript ファイルと CSS ファイルを 1 つのファイルに結合できるため、複数のリクエストを 1 つに最小限に抑えることができます。
たとえば、次の Web リクエストをページに含めます。このページには、Javascript1.js と Javascript2.js という 2 つの Javascript ファイルが必要です。

18. Func と Action の違いを簡単に説明しますか?

Func は戻り値のあるデリゲートであり、Action は戻り値のないデリゲートです。

19. プロジェクト内の同時実行性が高い問題を解決するにはどうすればよいですか?

回答: ユーザー キャッシュ、情報キャッシュなどを含むキャッシュをできるだけ使用し、キャッシュに多くのメモリを費やします。これにより、データベースとの対話が大幅に削減され、パフォーマンスが向上します。
データベースクエリステートメントを最適化します。
データベース構造を最適化し、より多くのインデックスを実行し、クエリ効率を向上させます。
統計関数はできる限りキャッシュする必要があります。または、関連するレポートを毎日または定期的にカウントして、必要な場合は統計関数を回避し、静的ページをできる限り使用できるようにし、コンテナーの解析を減らす必要があります (
生成可能な限り動的コンテンツ) 表示する静的 HTML)。
上記の問題を解決したら、サーバー クラスターを使用して単一サーバーのボトルネックの問題を解決します。

19. MVC での検証には他にどのようなアノテーション属性が使用されますか?

文字の長さを確認したい場合は、StringLengthを使用できます

1 [StringLength(160)]
2 public string FirstName {
    
     get; set; }

登録された式を使用する場合は、正規表現を使用できます。

1 [RegularExpression(@"[A-Za-z0-9._%+-]+@[A-Za-z0-9.-]+\.[A-Za-z]{2,4}")]public string Email {
    
     get; set; }

数値が範囲内にあるかどうかを確認したい場合は、 Range を使用できます。

1 [Range(10,25)]public int Age {
    
     get; set; }

2 つのフィールドの値を比較したい場合は、Compare を使用できます。

1 public string Password {
    
     get; set; }
2 [Compare("Password")]
3 public string ConfirmPass {
    
     get; set; }

20. ActionResult と ViewResult の違いは何ですか?

ActionResult は抽象クラスであり、ViewResult は ActionResult から派生します。ActionResult には、ViewResult、JsonResult、FileStreamResult などのいくつかの派生クラスがあります。
ActionResult を使用して、多態性の動的なアニメーションを開発できます。したがって、さまざまなタイプのビューを動的に実行する場合は、ActionResult が最適な選択です。たとえば、次のコードでは、DynamicView があることがわかります。マークアップ (IsHtmlView) に応じて、ViewResult または JsonResult を返します。

21. MVC でパッケージ化を実行するにはどうすればよいですか?

App_Start フォルダーの BundleConfig.cs を開き、
BundleConfig.cs で、パッケージ化する JS ファイルのパスをパッケージング コレクションに追加します。次のように:

1 bundles.Add(new ScriptBundle("~/Scripts/MyScripts").Include(
2 "~/Scripts/*.js"));

以下は BundleConfig.cs ファイルのコードです。

1 public class BundleConfig
2 {
    
    
3 public static void RegisterBundles(BundleCollection bundles)
4 {
    
    
5 bundles.Add(new ScriptBundle("~/Scripts/MyScripts").Includ
e(
6 "~/Scripts/*.js"));
7 BundleTable.EnableOptimizations = true;
8 }
9 }

スクリプトをファイルにマージしたら、次のようにして呼び出すことができます。

1 <%= Scripts.Render("~/Scripts/MyScripts") %>

22. MVCのルーティングとは何ですか?

ルーティング選択機能は、URL ルールを定義し、URL をコントローラにマップするのに役立ちます。

23. ルートマッピングテーブルはどこに書きますか?

「global.asax」ファイル内。

24. MVC でエリアについて言及する利点は何ですか?

MVC のエリアの利点は次のとおりです。
これにより、モデル、ビュー、およびコントローラーを、管理、請求、カスタマー サポートなどのアプリケーションの個別の機能部分に編成できます。
別のゾーンが作成した他のゾーンと簡単に統合できます。
単体テストも簡単に行えます。

25. MVC の RenderBody と RenderPage について説明できますか?

RenderBody は、Web フォームの ContentPlaceHolder に似ています。これはレイアウト ページ内に存在し、サブページ/ビューをレンダリングします。レイアウト ページには RenderBody() メソッドが 1 つだけあります。RenderPage はレイアウト ページ内にも存在し、レイアウト ページ内に複数の RenderPage() が存在できます。

26. ASP.NET MVCのフィルターとは何ですか?

APS.NET MVC (以下、「MVC」と呼びます) の各リクエストは、対応するコントローラーと対応する動作メソッドに割り当てられて処理され、追加の論理処理を追加する場合は、これらの処理の前後に行われます。ここでフィルターが使用されます。
MVC でサポートされるフィルターには、Authorization (認可)、Action (動作)、Result (結果)、および Exception (例外) の 4 種類があります。
認可: このタイプ (またはフィルター) は、コントローラーまたはコントローラーの特定の動作メソッドへのアクセスを制限するために使用されます。
例外: 動作を指定するために使用され、この指定された動作は動作メソッドまたはコントローラによってスローされた例外を処理します。
アクション: アクションの前後の処理を入力するために使用されます。
結果: 結果を返す前または後の処理に使用されます。

おすすめ

転載: blog.csdn.net/weixin_45091053/article/details/127177434