Подтвердить что ты не робот

Как я могу реализовать сайт с ASP.NET MVC без использования Visual Studio?

Я видел ASP.NET MVC без Visual Studio, который спрашивает, Возможно ли создание веб-сайта на основе ASP.NET MVC без использования Visual Studio?

И принятый ответ: да.

Хорошо, следующий вопрос: как?


Вот аналогия. Если я хочу создать страницу ASP.NET Webforms, я загружаю мой любимый текстовый редактор, создайте файл с именем Something.aspx. Затем я вставляю в этот файл некоторый шаблон:

<%@ Page Language="C#"
  Debug="true"
  Trace="false"
  Src="Sourcefile.cs"
  Inherits="My.Namespace.ContentsPage"
%>

<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
  <head>
    <title>Title goes here </title>
    <link rel="stylesheet" type="text/css" href="css/style.css"></link>

    <style type="text/css">
      #elementid {
          font-size: 9pt;
          color: Navy;
         ... more css ...
      }
    </style>

    <script type="text/javascript" language='javascript'>

      // insert javascript here.

    </script>

  </head>

  <body>
      <asp:Literal Id='Holder' runat='server'/>
      <br/>
      <div id='msgs'></div>
  </body>

</html>

Затем я также создаю файл Sourcefile.cs:

namespace My.Namespace
{
    using System;
    using System.Web;
    using System.Xml;
    // etc... 

    public class ContentsPage : System.Web.UI.Page
    {
        protected System.Web.UI.WebControls.Literal Holder;

        void Page_Load(Object sender, EventArgs e)
        {
            // page load logic here
        }
    }
}

И это рабочая страница ASPNET, созданная в текстовом редакторе. Переместите его в виртуальный каталог IIS, и он работает.

Что мне нужно сделать, чтобы создать базовое приложение hello, World ASPNET MVC в текстовом редакторе? (без Visual Studio)

Предположим, что я хочу базовое приложение MVC с контроллером, одним представлением и простой моделью. Какие файлы мне нужно будет создавать, и что будет в них?

4b9b3361

Ответ 1

ok, я рассмотрел учебник Walther и получил базовый сайт MVC.

Необходимыми файлами были:

Global.asax
App_Code\Global.asax.cs
App_Code\Controller.cs
Views\HelloWorld\Sample.aspx
web.config

Что это.

Внутри Global.asax я предоставляю этот шаблон:

<%@ Application Inherits="MvcApplication1.MvcApplication" Language="C#" %>

И этот класс MvcApplication определяется в модуле Global.asax.cs, который должен быть помещен в каталог App_Code. Содержимое выглядит следующим образом:

using System.Web.Mvc;
using System.Web.Routing;

public class MvcApplication : System.Web.HttpApplication
{
    public static void RegisterRoutes(RouteCollection routes)
    {
        routes.IgnoreRoute("{resource}.axd/{*pathInfo}");

        routes.MapRoute(
            "Default",                      // Route name
            "{controller}/{action}/{arg}",  // URL with parameters
            new {                           // Parameter defaults
              controller = "HelloWorld",
              action = "Index", 
              arg = "" }                 );
    }

    protected void Application_Start()
    {
        RegisterRoutes(RouteTable.Routes);
    }
}

Controller.cs предоставляет логику для обработки различных запросов. В этом простом примере класс контроллера выглядит следующим образом:

using System.Web.Mvc;
namespace MvcApplication1.Controllers
{
    public class HelloWorldController : Controller
    {
        public string Index()
        {
            return "Hmmmmm...."; // coerced to ActionResult
        }

        public ActionResult English()
        {
            return Content("<h2>Hi!</h2>");
        }

        public ActionResult Italiano()
        {
            return Content("<h2>Ciao!</h2>");
        }

        public ViewResult Sample()
        {
            return View();  // requires \Views\HelloWorld\Sample.aspx
        }
    }
}

Класс контроллера должен иметь имя XxxxxController, где часть Xxxxx определяет сегмент в пути URL. Для контроллера с именем HelloWorldController сегмент URL-адреса имеет значение HelloWorld. Каждый открытый метод в классе Controller является действием; метод вызывается, когда имя этого метода включено в другой сегмент в URL-адресе. Таким образом, для вышеуказанного контроллера эти URL-адреса приведут к вызову различных методов:

  • http://server/root/HelloWorld (действие по умолчанию)
  • http://server/root/HelloWorld/Index (как указано выше)
  • http://сервер/root/HelloWorld/английский
  • http://server/root/HelloWorld/Italiano
  • http://server/root/HelloWorld/Sample (представление, реализованное как Sample.aspx)

Каждый метод возвращает результат действия, один из следующих: Просмотр (страница aspx), Перенаправление, Пустой, Файл (различные параметры), Json, Контент (произвольный текст) и Javascript.

Страницы просмотра, такие как Sample.aspx в этом случае, должны выводиться из System.Web.Mvc.ViewPage.

<%@ Page Language="C#"
  Debug="true"
  Trace="false"
  Inherits="System.Web.Mvc.ViewPage"
 %>

Что это! Удаление вышеуказанного содержимого в IIS vdir дает мне рабочий сайт ASPNET MVC.

(Ну, мне также нужен файл web.config, в котором есть 8k конфигурации. Все эти исходные коды и настройки доступны для просмотра или скачивания.)

И затем я могу добавить другой статический контент: js, css, images и все, что мне нравится.

Ответ 2

Вы сделали бы то, что вы сделали выше, потому что вы не использовали бы модель или контроллер в приветственном приложении мира.

Вся визуальная студия предоставляет вам мастера создания файлов, поэтому теоретически все, что вам нужно сделать, это создать нужные файлы. Если вам нужны подробные спецификации для структуры проекта MVC, удачи, большая часть документации написана исходя из предположения, что вы используете визуальную студию, но вы можете пройти через учебное пособие шаг за шагом и разгадать его.

Лучше всего найти загружаемый демонстрационный проект, использовать визуальную студию для обратной инженерии структуры проекта или попробовать одну из IDE с открытым исходным кодом .net.

Ответ 3

Ну, так выглядит по умолчанию VS-скелет для приложения MVC 1.x:

Content
 Site.css
Controllers
 AccountController.cs
 HomeController.cs
Models
Scripts
 (all the jquery scripts)
 MicrosoftAjax.js
 MicrosoftMvcAjax.js
Views
 web.config
 Account
  ChangePassword.aspx
  ChangePasswordSuccess.aspx
  LogOn.aspx
  Register.aspx
 Home
  About.aspx
  Index.aspx
Shared
 Error.aspx
 LogOnUserControl.ascx
 Site.master
Default.aspx
Global.asax
web.config

Не знаю, что вы ищете... ключ здесь, очевидно, является файлом web.config.

Ответ 4

Примечание:, если вы добавили пространство имен, у вас должна быть сборка.

пример web.config для примера проекта Cheeso на openuse linux в монопроекте.

<?xml version="1.0" encoding="utf-8"?>
<configuration>
  <configSections>
    <section name="dotless" type="dotless.Core.configuration.DotlessConfigurationSectionHandler, dotless.Core" />
  </configSections>
  <appSettings>
    <add key="webpages:Version" value="1.0.0.0" />
    <add key="ClientValidationEnabled" value="true" />
    <add key="UnobtrusiveJavaScriptEnabled" value="true" />
  </appSettings>
  <system.web>
    <customErrors mode="Off"/>
    <compilation debug="true" targetFramework="4.0">
      <assemblies>
        <add assembly="System.Web.Abstractions, Version=4.0.0.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35" />
        <add assembly="System.Web.Routing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35" />
        <add assembly="System.Web.Mvc, Version=3.0.0.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35" />
<!--        <add assembly="System.Web.Helpers, Version=1.0.0.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35" />
        <add assembly="System.Web.WebPages, Version=1.0.0.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35" /> -->
      </assemblies>
    </compilation>
    <authentication mode="None"></authentication>
    <pages>
      <namespaces>
        <add namespace="System.Web.Mvc" />
        <add namespace="System.Web.Mvc.Ajax" />
        <add namespace="System.Web.Mvc.Html" />
        <add namespace="System.Web.Routing" />
<!--        <add namespace="System.Web.Helpers" />
        <add namespace="System.Web.WebPages" /> -->
      </namespaces>
    </pages>
    <httpHandlers>
      <add path="*.less" verb="GET" type="dotless.Core.LessCssHttpHandler, dotless.Core" />
    </httpHandlers>
  </system.web>
  <system.webServer>
    <validation validateIntegratedModeConfiguration="false" />
    <modules runAllManagedModulesForAllRequests="true" />
    <handlers>
      <add name="dotless" path="*.less" verb="*" type="dotless.Core.LessCssHttpHandler,dotless.Core" resourceType="File" preCondition="" />
    </handlers>
  </system.webServer>
  <runtime>
    <assemblyBinding xmlns="urn:schemas-microsoft-com:asm.v1">
      <dependentAssembly>
        <assemblyIdentity name="System.Web.Mvc" publicKeyToken="31bf3856ad364e35" />
        <bindingRedirect oldVersion="1.0.0.0-2.0.0.0" newVersion="3.0.0.0" />
      </dependentAssembly>
      <dependentAssembly>
        <assemblyIdentity name="System.Web.Abstractions" publicKeyToken="31bf3856ad364e35" culture="neutral" />
        <bindingRedirect oldVersion="0.0.0.0-4.0.0.0" newVersion="4.0.0.0" />
      </dependentAssembly>
    </assemblyBinding>
  </runtime>
  <dotless minifyCss="false" cache="true" web="false" />
</configuration>