Воспоминание ASP NET MVC 02.01.2025
Всем привет!
Тут Воспоминание Microsoft Silverlight 08.10.2024 я воспоминал Microsoft Silverlight 1 и Microsoft Silverlight 2, а тут Воспоминание asp net 12.10.2024 классический ASP NET WebForms. Сегодня вспомними ASP NET MVC2. Недавно покушал индийскую еду курочка с лапшой и каким-то подливом.
Короче есть у меня такое:
Как я пришёл к ASP NET MVC? Короче давно примерно в 2010-2012 гг. начал баловаться в кохану см. Балуюсь в кохану 17.12.2024 так и познакомился я с MVC. Хотя в колледже когда я учился на программиста мы проходили бегло MVC.
Итак давайте побалуемся в ASP NET MVC2. Я буду пользоваться 2010 Express Edition.
1. Запустим Visual Studio 2010 или Visual Web Developer 2010, и нажмём File->New Project...:
2. Появится диалоговое окно New Project, выберем ASP NET MVC2 Empty Web Application:
Появится пустой проект.
3. Сделаем так, создадим новый контроллер, назовём его Default1Controller, ну или он будет называться Default1:
Вот код Default1Controller.cs:
using System; using System.Collections.Generic; using System.Linq; using System.Web; using System.Web.Mvc; namespace MvcApplication2.Controllers { public class Default1Controller : Controller { // // GET: /Default1/ public ActionResult Index() { return View(); } } }
4. Добавим шаблон ViewMasterPage1.Mater:
Вот код:
<%@ Master Language="C#" Inherits="System.Web.Mvc.ViewMasterPage" %> <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> <html xmlns="http://www.w3.org/1999/xhtml" > <head runat="server"> <title><asp:ContentPlaceHolder ID="TitleContent" runat="server" /></title> </head> <body> <div> <asp:ContentPlaceHolder ID="MainContent" runat="server"> </asp:ContentPlaceHolder> </div> </body> </html>
5. Добавим вид ну или вьюшку файл Index.aspx:
Вот код:
<%@ Page Title="" Language="C#" MasterPageFile="~/Views/Shared/ViewMasterPage1.Master" Inherits="System.Web.Mvc.ViewPage<dynamic>" %> <asp:Content ID="Content1" ContentPlaceHolderID="TitleContent" runat="server"> Index </asp:Content> <asp:Content ID="Content2" ContentPlaceHolderID="MainContent" runat="server"> <h2>Index</h2> </asp:Content>
5. Вуаля! А вот и результат, вот такое увидим в браузере:
Помойму в ASP NET MVC1, и в MVC2 точно - нужно использовать глобальную переменную ViewData,а в современном ASP NET Razor нужно использовать глобальную переменную ViewBag. В классическом ASP NET WebForms можно создавать элементы управления, и в ASP NET MVC2 вроде бы можно создавать элементы управления. Допустим нам нужно создать меню, вот элемент управления меню ViewUserControl1.ascx:
<%@ Control Language="C#" Inherits="System.Web.Mvc.ViewUserControl" %> <ul style="list-style-type:none;margin:0;padding:0;overflow:hidden; background-color:blue; color:white;"> <% foreach (String i in (IEnumerable<String>)ViewData["x"]) { %> <li style="float:left; display:block;text-align:center;padding:20px;text-decoration:none;"><% = i%></li> <% } %> </ul>
А вот шаблон ViewMasterPage1.Master:
<%@ Master Language="C#" Inherits="System.Web.Mvc.ViewMasterPage" %> <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> <html xmlns="http://www.w3.org/1999/xhtml" > <head runat="server"> <title><asp:ContentPlaceHolder ID="TitleContent" runat="server" /></title> </head> <body> <div> <asp:ContentPlaceHolder ID="MainContent" runat="server"> </asp:ContentPlaceHolder> <% String[] arrItems = {"Главная страница", "Продукты", "О нас..."}; ViewData["x"] = arrItems; Html.RenderPartial("ViewUserControl1", ViewData); %> </div> </body> </html>
Может быть это изврат, но если вызвать это в веб браузере, то будет что-то такое:
Анимация что-то не работает.
3. Сделаем так, создадим новый контроллер, назовём его Default1Controller, ну или он будет называться Default1
См. https://i.postimg.cc/v8P2jhsk/bandicam2025-01-0206-15-30-9...
4. Добавим шаблон ViewMasterPage1.Mater:
См. https://i.postimg.cc/pX4GVdyB/bandicam2025-01-0206-18-33-5...
5. Добавим вид ну или вьюшку файл Index.aspx:
См. https://i.postimg.cc/ncCStmVz/bandicam2025-01-0206-22-11-1...
Нужно так делать
String[] arrItems = {"Главная страница", "Продукты", "О нас..."}; ViewData["x"] = arrItems; Html.RenderPartial("ViewUserControl1");
А так не нужно!
String[] arrItems = {"Главная страница", "Продукты", "О нас..."}; ViewData["x"] = arrItems; Html.RenderPartial("ViewUserControl1", ViewData);
НЕ НУЖНО!
Html.RenderPartial("ViewUserControl1", ViewData);
Но можно вот так вот:
Html.RenderPartial("ViewUserControl1", new ViewDataDictionary { { "x", new String[] { "Главная страница", "Продукты", "О нас..." } } });