Серия вопросов для собеседования по .NET/C#: ASP.NET MVC [Изучайте и улучшайте по мере необходимости]

PS: В городе редакции большая часть ERP и BPMS систем работает на базе .NET, а остальные системы структуры BS в основном основаны на Vue+.NET, а предложений, разработанных MVC для единого хранилища [только для редактора в Босс. Анализ данных на Жипине], поэтому эту главу можно отнести к подходящей статье для обучения и совершенствования!

1. В чем разница между TempData\ViewBag\ViewData в MVC?

TempData хранится в сеансе. Каждый раз, когда контроллер выполняет запрос, он сначала получает TempData из сеанса, а затем очищает сеанс. После получения данных TempData, хотя они и хранятся во внутреннем объекте словаря, каждая запись в коллекции После однократного доступа он удаляется из таблицы словаря.ViewData хранит словарь ключ/значение, и при его использовании требуется преобразование типов.
ViewBag и ViewData действительны только в текущем действии, что эквивалентно представлению. ViewBag работает медленнее, чем ViewData. ViewBag хранит данные динамического типа и не требует преобразования типов при использовании.
Значения в ViewData и ViewBag могут обращаться друг к другу, поскольку реализация ViewBag содержит ViewData, а ViewData хранит словарь Ключ/Значение, который требует преобразования типов.

2. Объясните механизм структуры MVC и роль каждого модуля?

  • Так называемая модель — это источник данных, который должен предоставить MVC, отвечающий за доступ к данным и их обслуживание.
  • Так называемое представление — это пользовательский интерфейс, используемый для отображения данных в модели.
  • Для обработки пользовательского ввода используется так называемый контроллер, отвечающий за изменение состояния модели и выбор соответствующего представления для отображения данных модели.

3. Какова связь между ASP.NET и ASP.NET MVC?

ASP.NET MVC построен на основе ядра ASP.NET, как видно из пространства имен mvc System.Web.Mvc, поскольку System.Web является основным пространством имен Asp.NET.
Например, ASP.NET MVC полагается на HttpHandler. Что касается того, как запрос поступает в контроллер, он фактически использует HttpHandler
Session, Cookie, Cache и Application, которые представляют собой механизмы хранения объектов ASP.NET, которые все еще необходимо использовать в MVC. Объекты HttpContext, Request, Response
и Server по-прежнему можно использовать в MVC, и эти объекты легко получить в форме Intellisense в контроллере.

4. Каковы преимущества MVC для ASP.NET?

  • Обеспечьте очень четкое управление производительностью, например уровень пользовательского интерфейса, то есть представление, модель уровня данных и контроллер уровня управления.
  • Модульное тестирование проще.
  • Улучшенная модель данных и возможность повторного использования представлений.
  • Структура кода более оптимизирована.

5. Что такое движок Razor View?

Этот механизм предоставляет шаблоны отображения с привязкой к данным.

 @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. Что такое частичный просмотр?

Частичное представление эквивалентно пользовательским элементам управления в традиционных веб-таблицах.
Его основная цель — повторное использование этих представлений, и они обычно размещаются в общей папке.

 html.partial()
 html.renderpartial()

10. Подходит ли MVC как для приложений Windows, так и для веб-приложений?

По сравнению с приложениями Windows архитектура MVC больше подходит для веб-приложений. Для приложений Windows лучше подходит архитектура MVP (Model View Presenter). Если вы используете WPF и Silverlight, MVVM более подходит.

11. Как сохранить сессии в MVC?

Его можно поддерживать тремя способами: tempdata, viewdata и viewbag.

12. У меня уже есть ASPX, зачем мне Razor?

По сравнению с ASPX, Razor является более чистым, легким и синтаксически простым. Например, ASPX для отображения времени:

<%=DateTime.Now%>

В Razor нужна только одна строка: @DateTime.Now

13. Как реализовать аутентификацию Windows в MVC?

Вам необходимо изменить файл 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 }

Для других действий, требующих аутентификации, необходимо добавить атрибут авторизации. Если у пользователя нет разрешения, он будет перенаправлен на страницу входа.

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 — выполняет перенаправление HTTP на указанный URL-адрес.
  • RedirectToRouteResult — выполняет перенаправление HTTP на URL-адрес, определенный механизмом маршрутизации на основе данных маршрутизации.
  • JsonResult — сериализует объект ViewData в формат JSON.
  • JavaScriptResult — возвращает фрагмент кода Javascript, который может быть выполнен на клиенте.
  • ContentResult — записывает контент в поток ответа, не требует поддержки просмотра.
  • FileContentResult — возвращает файл клиенту.
  • FileStreamResult — возвращает файл клиенту, предоставившему поток.
  • FilePathResult — возвращает файл клиенту.

16. Что такое веб-API?

HTTP — наиболее часто используемый протокол. В течение многих лет браузер был нашим предпочтительным клиентом для предоставления данных с использованием HTTP. Но с каждым днем ​​клиенты приобрели множество форм. Нам нужно использовать HTTP для передачи данных различным клиентам, таким как: мобильные телефоны, Javascript, приложения Windows и т. д.
WebAPI — это технология, которая предоставляет данные через HTTP и следует правилам REST.

17. Что такое упаковка и сжатие в MVC?

Упаковка и сжатие помогают нам сократить время запроса страницы, тем самым повышая производительность ее выполнения.
Как добиться высоких результатов в упаковке?
Наши проекты всегда требуют CSS и файлов сценариев. Объединение помогает объединить несколько файлов Javascript и CSS в один файл, тем самым сводя к минимуму несколько запросов в один.
Например, добавьте на страницу следующий веб-запрос. Для этой страницы требуются два файла Javascript: Javascript1.js и Javascript2.js.

18. Кратко опишите разницу между Func и Action?

Func — это делегат с возвращаемым значением, а Action — делегат без возвращаемого значения.

19. Как решить проблемы с высоким параллелизмом в проекте?

Ответ: Максимально используйте кеш, включая пользовательский кеш, информационный кеш и т. д., и тратьте больше памяти на кеш, что может значительно сократить взаимодействие с базой данных и повысить производительность.
Оптимизируйте операторы запросов к базе данных.
Оптимизируйте структуру базы данных, используйте больше индексов и повысьте эффективность запросов.
Статистические функции следует кэшировать в максимально возможной степени, или соответствующие отчеты можно подсчитывать ежедневно или через регулярные промежутки времени, избегая статистических функций, когда это необходимо, где
статические страницы могут использоваться как можно чаще, а анализ контейнеров должен быть сокращен (генерация как можно больше динамического контента) статический HTML для отображения).
После решения вышеуказанных проблем используйте кластеры серверов для решения проблемы узкого места одного сервера.

19. Какие еще атрибуты аннотации используются для проверки в MVC?

Если вы хотите проверить длину символов, вы можете использовать StringLength

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

Если вы хотите использовать зарегистрированное выражение, вы можете использовать RegularExpression.

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; }

Иногда вы хотите сравнить значения двух полей, мы можем использовать 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?

Откройте BundleConfig.cs в папке App_Start.
В 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. Каковы преимущества упоминания Area в MVC?

Преимущества областей в MVC заключаются в следующем:
они позволяют нам организовывать модели, представления и контроллеры в отдельные функциональные части приложения, такие как администрирование, выставление счетов, поддержка клиентов и многое другое.
Легко интегрироваться с другими зонами, созданными другими.
Также легко провести модульное тестирование.

25. Можете ли вы объяснить RenderBody и RenderPage в MVC?

RenderBody похож на ContentPlaceHolder в веб-формах. Это будет жить на страницах макета и будет отображать подстраницы/представления. Страница макета будет иметь только один метод RenderBody(). RenderPage также существует на странице макета, и на странице макета может существовать несколько RenderPage().

26. Каковы фильтры ASP.NET MVC?

Каждый запрос в APS.NET MVC (далее «MVC») будет назначен соответствующему контроллеру и соответствующему методу поведения для обработки, а также до и после этой обработки, если вы захотите добавить некоторую дополнительную логическую обработку. Здесь используются фильтры.
MVC поддерживает четыре типа фильтров, а именно: Authorization (авторизация), Action (поведение), Result (результат) и Exception (исключение).
Авторизация: этот тип (или фильтр) используется для ограничения доступа к контроллеру или определенному методу поведения контроллера.
Исключение: оно используется для указания поведения, и это указанное поведение обрабатывает исключение, вызванное методом поведения или контроллером.
Действие: используется для входа в обработку до или после действия.
Результат: используется для обработки до или после возврата результата.

Je suppose que tu aimes

Origine blog.csdn.net/weixin_45091053/article/details/127177434
conseillé
Classement