Deutsch

Воспоминание ASP NET MVC 02.01.2025

50  
uscheswoi_82 коренной житель4 дня назад, 06:52
4 дня назад, 06:52 

Всем привет!

Тут Воспоминание Microsoft Silverlight 08.10.2024 я воспоминал Microsoft Silverlight 1 и Microsoft Silverlight 2, а тут Воспоминание asp net 12.10.2024 классический ASP NET WebForms. Сегодня вспомними ASP NET MVC2. Недавно покушал индийскую еду курочка с лапшой и каким-то подливом.


Короче есть у меня такое:





Если я кому-то отвечаю, это не значит что я ему симпатизирую, каждый остаётся при своём мнение
#1 
uscheswoi_82 коренной житель4 дня назад, 07:10
NEW 4 дня назад, 07:10 
в ответ uscheswoi_82 4 дня назад, 06:52

Как я пришёл к 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. Вуаля! А вот и результат, вот такое увидим в браузере:


Если я кому-то отвечаю, это не значит что я ему симпатизирую, каждый остаётся при своём мнение
#2 
uscheswoi_82 коренной житель4 дня назад, 07:27
NEW 4 дня назад, 07:27 
в ответ uscheswoi_82 4 дня назад, 07:10

Помойму в 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 
uscheswoi_82 коренной житель4 дня назад, 07:36
NEW 4 дня назад, 07:36 
в ответ uscheswoi_82 4 дня назад, 07:10

Анимация что-то не работает.

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...

Если я кому-то отвечаю, это не значит что я ему симпатизирую, каждый остаётся при своём мнение
#4 
uscheswoi_82 коренной житель4 дня назад, 09:14
NEW 4 дня назад, 09:14 
в ответ uscheswoi_82 4 дня назад, 07:36

Нужно так делать

String[] arrItems = {"Главная страница", "Продукты", "О нас..."};
ViewData["x"] = arrItems;
Html.RenderPartial("ViewUserControl1");


А так не нужно!

String[] arrItems = {"Главная страница", "Продукты", "О нас..."};
ViewData["x"] = arrItems;
Html.RenderPartial("ViewUserControl1", ViewData);

НЕ НУЖНО!

Html.RenderPartial("ViewUserControl1", ViewData);

Если я кому-то отвечаю, это не значит что я ему симпатизирую, каждый остаётся при своём мнение
#5 
uscheswoi_82 коренной житель4 дня назад, 23:30
NEW 4 дня назад, 23:30 
в ответ uscheswoi_82 4 дня назад, 09:14

Но можно вот так вот:

Html.RenderPartial("ViewUserControl1", new ViewDataDictionary { { "x", new String[] { "Главная страница", "Продукты", "О нас..." }  } });
Если я кому-то отвечаю, это не значит что я ему симпатизирую, каждый остаётся при своём мнение
#6