Index aspx

Я создал контроллер с именем loginController.cs и создал представление с именем login.aspx.

Как мне вызвать это представление из loginController.cs?

Наблюдения и советы этой статьи мы подготовили на основании опыта команды ActionResult всегда настроен на индекс, и для аккуратности я хочу указать, какое представление использует контроллер при вызове, а не всегда вызывать свой индекс по умолчанию?

Надеюсь, это имеет смысл.

как я могу сделать это, когда я иду (например) http://localhost:60288/ он не показывает мне список каталогов, а скорее открывает Index.aspx страница? Это работает с http://localhost:60288/Index.aspx но я не хочу иметь Index.aspx показывают каждый раз.

мне тоже нужны ссылки типа http://localhost:60288/?a=1 работать как http://localhost:60288/Index.aspx?a=1 без Index.aspx показано на рисунке.

это работало, когда я создавал проект веб-сайта в Visual Studio, но теперь я использую проект приложения. как я могу настроить это?

я хочу/нужно, чтобы это работало и для всех подпапок, например http://localhost:60288/SubFolder/ должен работать так, как если бы он был связан с http://localhost:60288/SubFolder/Index.aspx

редактировать все равно не справился

  1. Organizational Level
  2. Site Level

On this blog post let’s see how to host static content (HTML, JS, CSS, Images et) by updating the site scripts settings at the site level. At the end I write some options to host Static content in Azure.

  1. Modern SharePoint Communication Site
  2. SharePoint Online Tenant Admin access for executing few PowerShell commands
  3. HTML Content
  4. Access to Azure Subscription as a Contributor to test static content hosting in Azure

Be ready with the HTML sample. I’ve downloaded static content from the Azure HTML Sample github repo which has

  • HTML
  • CSS
  • JavaScript

If there is any file with HTML extension, rename the extension to .aspx. On this sample there was 1 HTML file by the name index.html, I’ve renamed the file index.html to index.aspx

Upload the folder which has the .HTML file renamed to .aspx and the supporting files (JS, Images, CSS etc)

Index aspx

After the upload

Index aspx

Click the index.aspx file, it should render the file with HTML, CSS, JS etc as shown below

Index aspx

In the document library if you have a HTML file converted to ASPX before executing the command, it may not work. To make it work delete the ASPX file and upload it again to the document library

Tip

Embed the Static HTML Page in a SharePoint page:

Index aspx

ASP.NETASP.NET MVC 5 — Генерация HTML-разметки

В предыдущей статье мы кратко рассмотрели классы результатов действий, позволяющих сообщать инфраструктуре ASP.NET MVC что именно нужно генерировать из методов действий контроллера (HTML-разметку, перенаправление, HTTP-ошибки и т.д.) В этой и последующих статьях мы рассмотрим эти классы более подробно.

Наиболее общим видом ответа из метода действия является генерация HTML-разметки и ее отправка браузеру. Чтобы продемонстрировать визуализацию представлений, в проект был добавлен контроллер по имени Example. Содержимое файла класса ExampleController.cs приведено в примере ниже:

using System.Web.Mvc;

namespace ControllersAndActions.Controllers
{
    public class ExampleController : Controller
    {
        public ViewResult Index()
        {
            return View("Homepage");
        }
    }
}

Когда используется система результатов действий, представление, которое инфраструктура MVC Framework должна визуализировать, указывается с применением экземпляра класса ViewResult. Проще всего это сделать с помощью вызова метода View() контроллера, передав ему представление в качестве аргумента. В примере метод View() вызывается с аргументом Homepage, который указывает на необходимость использования представления HomePage.cshtml.

Обратите внимание, что возвращаемым типом метода действия в примере является ViewResult. Метод будет компилироваться и работать так же хорошо, если бы мы указали более общий тип ActionResult. На самом деле некоторые программисты MVC будут определять результат каждого метода действия как ActionResult, даже если известно, что метод возвращает более специфичный тип.

Когда инфраструктура MVC Framework вызывает метод ExecuteResult() объекта класса ViewResult, начинается поиск указанного вами представления. Если в проекте применяются области, инфраструктура будет просматривать следующие местоположения:

/Areas/<ИмяОбласти>/Views/<ИмяКонтроллера>/<ИмяПредставления>.aspx

/Areas/<ИмяОбласти>/Views/<ИмяКонтроллера>/<ИмяПредставления>.ascx

/Areas/<ИмяОбласти>/Views/Shared/<ИмяПредставления>.aspx

/Areas/<ИмяОбласти>/Views/Shared/<ИмяПредставления>.ascx

/Areas/<ИмяОбласти>/Views/<ИмяКонтроллера>/<ИмяПредставления>.cshtml

/Areas/<ИмяОбласти>/Views/<ИмяКонтроллера>/<ИмяПредставления>.vbhtml

/Areas/<ИмяОбласти>/Views/Shared/ <ИмяПредставления>.cshtml

/Areas/<ИмяОбласти>/Views/Shared/<ИмяПредставления>.vbhtml

В этом списке видно, что инфраструктура ищет представления, которые были созданы для унаследованного механизма визуализации ASPX (файловые расширения .aspx и .ascx), несмотря на то, что MVC Framework использует механизм Razor. Цель заключается в сохранении совместимости с ранними версиями MVC Framework, в которых применялись средства визуализации из ASP.NET Web Forms.

Инфраструктура также ищет шаблоны Razor на языках C# и Visual Basic .NET. (Файлы *.cshtml содержат код C#, а файлы *.vbhtml — код Visual Basic. Синтаксис Razor в этих файлах одинаков, но фрагменты кода написаны на разных языках.) Инфраструктура MVC Framework проверяет существование каждого из указанных файлов по очереди. Как только файл представления обнаруживается, он используется для визуализации результата, возвращенного методом действия.

Если области в проекте не применяются или же используются, но ни одного файла из предыдущего списка найти не удалось, инфраструктура продолжит поиск в перечисленных ниже местоположениях:

/Views/<ИмяКонтроллера>/<ИмяПредставления>.aspx

/Views/<ИмяКонтроллера>/<ИмяПредставления>.ascx

/Views/Shared/<ИмяПредставления>.aspx

/Views/Shared/<ИмяПредставления>.ascx

/Views/<ИмяКонтроллера>/<ИмяПредставления>.cshtml

/Views/<ИмяКонтроллера>/<ИмяПредставления>.vbhtml

/Views/Shared/<ИмяПредставления>.cshtml

/Views/Shared/<ИмяПредставлеиия>.vbhtml

Опять-таки, когда MVC Framework обнаруживает файл, поиск останавливается а найденное представление применяется для визуализации ответа клиенту. В нашем примере приложения области отсутствуют, поэтому первым местоположением, которое будет просматривать инфраструктура, является /Views/Example/Index.aspx. Обратите внимание, что часть Controller в имени класса опущена, так что создание ViewResult в ExampleController приводит к поиску в папке по имени Example.

Модульное тестирование: визуализация представления

Чтобы протестировать представление, которое визуализирует метод действия, можно проинспектировать возвращаемый им объект ViewResult. Это не совсем то же самое (в конце концов, вы не следуете процессу посредством проверки финальной HTML-разметки, которая была сгенерирована), но данный прием очень близок к реальности, т.к. позволяет удостовериться в корректной работе системы представлений MVC Framework.

Мы добавили в проект модульного тестирования новый файл модульных тестов по имени ActionTests.cs для хранения модульных тестов, предназначенных для этой и последующих статей. Первой тестируемой ситуацией является момент, когда метод действия выбирает специфичное представление, например:

// ...
public ViewResult Index()
{
    return View("Homepage");
}
// ...

Для определения того, какое представление было выбрано, необходимо прочитать свойство viewName объекта ViewResult, как показано в следующем тестовом методе:

using System;
using System.Web.Mvc;
using ControllersAndActions.Controllers;
using Microsoft.VisualStudio.TestTools.UnitTesting;

namespace ControllersAndActions.Tests
{
    [TestClass]
    public class UnitTest1
    {
        [TestMethod]
        public void ControllerTest()
        {
            // Организация - создание контроллера
            ExampleController controller = new ExampleController();

            // Действие - вызов метода действия
            ViewResult result = controller.Index();

            // Утверждение - проверка результата
            Assert.AreEqual("Homepage", result.ViewName);
        } 
    }
}

Небольшое изменение появляется при тестировании метода действия, который выбирает стандартное представление:

// ...
public ViewResult Index()
{
    return View();
}
// ...

В таких ситуациях для имени представления должна приниматься пустая строка («»):

// ...
// Утверждение - проверка результата
Assert.AreEqual("", result.ViewName);

С помощью пустой строки объект ViewResult сигнализирует механизму Razor о том, что было выбрано стандартное представление, ассоциированное с методом действия.

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

// ...
public ViewResult Index()
{
    return View();
}
// ...

Инфраструктура MVC Framework предполагает, что мы хотим визуализировать представление, которое имеет то же самое имя, что и метод действия. Это означает, что вызов метода View() в примере ниже инициирует поиск представления по имени Index.

Доступно несколько перегруженных версий метода View(). Они соответствуют установке разнообразных свойств созданного объекта ViewResult. Например, ниже показано, как переопределить компоновку, применяемую представлением, явно указав альтернативное имя:

// ...
public ViewResult Index()
{
    return View("Index", "_AlternateLayout");
}
// ...

5 ответы

Cassini (встроенный веб-сервер, используемый Visual Studio) не позволяет настроить используемый по умолчанию документ, если вы не укажете имя файла в своем URL-адресе. Параметр «Установить как стартовую страницу» — это не то же самое, как вы обнаружили, поскольку он влияет только на то, какая страница открывается первой при запуске проекта, и не влияет на последующие загрузки страниц.

Тем не менее, Кассини иметь список документов по умолчанию — он просто не настраивается, и список содержит только «default.aspx» и «default.htm». Единственный способ добиться того, чего вы хотите в Cassini, — это переименовать все ваши файлы «index.aspx» в «default.aspx».

Создан 16 ноя.

Index aspx

Самый простой способ сделать это — использовать сопоставление. Внутри вашего Web.config вставьте следующее:

<configuration>                                                                  
    <system.web>                                                                 
        <compilation debug="true" targetFramework="4.0" />                       
        <urlMappings enabled="true">                                             
            <add url="~/" mappedUrl="~/index.aspx" />                
            <add url="~/default.aspx" mappedUrl="~/index.aspx" />                
        </urlMappings>                                                           
    </system.web>                                                                
</configuration>            

Создан 08 фев.

Index aspx

Заходим в диспетчер IIS (в панели управления — инструменты администрирования)

Щелкните правой кнопкой мыши — свойства на веб-сайте по умолчанию

Вкладка «Документы» — убедитесь, что установлен флажок «Включить документ по умолчанию» и что index.aspx находится в списке документов по умолчанию, желательно вверху.

Вкладка «Домашняя директория» — убедитесь, что у вас создано приложение (имя приложения не должно быть пустым). Нажмите кнопку «Создать», если вам нужно.

Вкладка asp.net — убедитесь, что вы выбрали нужную версию платформы.

Дайте мне знать, как вы идете.

Создан 15 ноя.

Index aspx

Вы можете удалить или переименовать свой index.aspx , чтобы он отображал список каталогов при запуске, если вы не установите другую страницу в качестве начальной страницы.

Во-вторых, вы можете использовать функцию маскирования URL-адресов ASP.NET.

Создан 15 ноя.

Index aspx

Вы можете использовать IIS Manager, чтобы установить документ(ы) по умолчанию для вашего сайта/приложения.

Cassini (веб-сервер разработки, интегрированный в Visual Studio) не поддерживает возможность изменения документа по умолчанию.

И да, вам нужно быть администратором для настройки IIS.

Создан 15 ноя.

Index aspx

Не тот ответ, который вы ищете? Просмотрите другие вопросы с метками

c#
asp.net
web-applications
settings

or задайте свой вопрос.

Передача данных из метода действия в представление

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

Предоставление объекта модели представления

Отправить объект представлению можно, передав его в качестве параметра методу View(), как показано в примере ниже:

using System;
using System.Web.Mvc;

namespace ControllersAndActions.Controllers
{
    public class ExampleController : Controller
    {
        public ViewResult Index()
        {
            DateTime date = DateTime.Now;
            return View(date);
        }
    }
}

Объект DateTime передается как модель представления, а доступ к нему в представлении осуществляется с помощью ключевого слова Model синтаксиса Razor. Для демонстрации использования ключевого слова Model в папку Views/Example добавлено представление по имени Index.cshtml с содержимым, приведенным в примере ниже:

@{
    ViewBag.Title = "Index";
}

<h2>Index</h2>

День недели: @(((DateTime)Model).DayOfWeek)

Представление, показанное в примере, является нетипизированным или слабо типизированным. Этому представлению ничего не известно об объекте модели представления, и оно трактует его как экземпляр типа object. Чтобы извлечь значение свойства DayOfWeek, понадобится привести объект к типу DateTime. Это работает, но порождает запутанные представления. Мы можем обойти это, создавая строго типизированные представления, в которых представлению сообщается тип объекта модели представления, как показано в примере ниже:

@model DateTime
@{
    ViewBag.Title = "Index";
}

<h2>Index</h2>

День недели: @Model.DayOfWeek

Тип модели представления указывается с применением ключевого слова model синтаксиса Razor. Обратите внимание на использование буквы «m» нижнего регистра при указании типа модели и буквы «M» верхнего регистре при чтении значения. Строгая типизация не только помогает справиться с представлением, но также позволяет Visual Studio поддерживать средство IntelliSense:

Поддержка средства IntelliSense для строго типизированных представлений

Модульное тестирование: объекты модели представления

Получить доступ к объекту модели представления, переданному из метода действия в представление, можно с помощью свойства ViewResult.ViewData.Model. Ниже приведен код тестового метода для метода действия Index. В тестовом методе с помощью метода Assert.IsInstanceOfType() выполняется проверка того, что объект модели представления является экземпляром типа DateTime:

// ...
[TestMethod]
public void ViewSelectionTest()
{
    // Организация - создание контроллера
    ExampleController controller = new ExampleController();

    // Действие - вызов метода действия
    ViewResult result = controller.Index();

    // Утверждение - проверка результата
    Assert.AreEqual("", result.ViewName);
    Assert.IsInstanceOfType(result.ViewData.Model, typeof(System.DateTime));
}
// ...

Передача данных с помощью ViewBag

Объект ViewBag позволяет определять произвольные свойства в динамическом объекте C# и обращаться к ним в представлении. Динамический объект доступен через свойство Controller.ViewBag, как показано в примере ниже:

using System;
using System.Web.Mvc;

namespace ControllersAndActions.Controllers
{
    public class ExampleController : Controller
    {
        public ViewResult Index()
        {
            ViewBag.Message = "Привет";
            ViewBag.Date = DateTime.Now;
            return View();
        }
    }
}

В примере свойства Message и Date объекта ViewBag определяются простым присваиванием им значений. До этого момента указанные свойства не существовали, и никакой подготовительной работы для их создания не проводилось. Для чтения данных в представлении применяются те же самые свойства, которые устанавливались в методе действия:

@{
    ViewBag.Title = "Index";
}

<h2>Index</h2>

День недели: @(ViewBag.Date.DayOfWeek)<br />
Сообщение из контроллера: @ViewBag.Message

Преимущество использования ViewBag по сравнению с объектом модели представления связано с простотой отправки множества объектов представлению. Если ограничиться применением только моделей представлений, понадобилось бы создать новый тип с членами string и DateTime, чтобы получить такой же результат.

При работе с динамическими объектами в представлении можно вводить любую последовательность обращений к методам и свойствам, например:

...
@ViewBag.Date.DayOfWeek.Hahaha.NoExistProperty
...

Среда Visual Studio не может обеспечить поддержку IntelliSense для динамических объектов, в том числе и для ViewBag, поэтому возможные ошибки не будут распознаны вплоть до визуализации представления.

Модульное тестирование: объект ViewBag

Чтение значений из ViewBag осуществляется через свойство ViewResult.ViewBag. Следующий тестовый метод предназначен для текущего метода действия Index:

// ...
[TestMethod]
public void ControllerTest()
{
    // Организация - создание контроллера
    ExampleController controller = new ExampleController();

    // Действие - вызов метода действия
    ViewResult result = controller.Index();

    // Утверждение - проверка результата
    Assert.AreEqual("", result.ViewName);
    Assert.AreEqual("Привет", result.ViewBag.Message);
}
// ...

Static Content in Azure

There are couple of options in Azure to host your HTML as shown below

  1. Azure App service
  2. Azure Static Webapps
  3. Azure Storage

Index aspx

Указание представления по его пути

Подход с соглашением об именовании удобен и прост, однако он ограничивает представления, которые можно визуализировать. Чтобы визуализировать специфичное представление, можно предоставить явный путь и пропустить фазу поиска. Ниже приведен пример:

// ...
public ViewResult Index()
{
    return View("~/Views/MyFolder/Index.cshtml");
}
// ...

При таком указании представления путь должен начинаться с «/» или «~/» и включать расширение имени файла (наподобие .cshtml для представлений Razor, содержащих код C#).

Если вы будете использовать это средство, предлагается подумать над вопросом: чего вы хотите этим достичь? Если вы пытаетесь визуализировать представление, принадлежащее другому контроллеру, возможно, будет лучше перенаправить пользователя на метод действия в этом контроллере.

Published by Mohamed Ashiq Faleel

3 ответы

Вы можете настроить почти все в маршрутизации MVC — нет особых ограничений на то, как выглядят маршруты (важно только их упорядочение), вы можете называть действия иначе, чем имена методов (через атрибут ActionName), вы можете называть представления как хотите (т.е. возвращая конкретное представление по имени).

return View("login");

ответ дан 17 окт ’12, 01:10

Index aspx

routes.MapRoute(
    "SpecialLoginRoute",
    "login/",
    new { controller = "Login", action = "Login", id = UrlParameter.Optional }
);

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

.. хотя, не продумав должным образом того, чего вы пытаетесь достичь (то есть .. изменение того, что MVC делает по умолчанию), вы обязательно получите множество запутанных маршрутов.

ответ дан 17 окт ’12, 01:10

Index aspx

Вы возвращаете представление с вашего контроллера с помощью методов Action.

public class LoginController:Controller
{
  public ActionResult Index()
  {
    return View();
    //this method will return `~/Views/Login/Index.csthml/aspx` file
  }
  public ActionResult RecoverPassword()
  {
    return View();
    //this method will return `~/Views/Login/RecoverPassword.csthml/aspx` file
  }
}

Если вам нужно вернуть другое представление (кроме имени метода действия, вы можете явно указать его

  public ActionResult FakeLogin()
  {
    return View("Login");
    //this method will return `~/Views/Login/Login.csthml/aspx` file
  }

Если вы хотите вернуть представление, которое существует в другой папке контроллера, в ~/Views вы можете использовать полный путь

   public ActionResult FakeLogin2()
  {
    return View("~/Views/Account/Signin");
    //this method will return `~/Views/Account/Signin.csthml/aspx` file
  }

ответ дан 17 окт ’12, 01:10

Index aspx

Не тот ответ, который вы ищете? Просмотрите другие вопросы с метками

c#
asp.net-mvc
asp.net-mvc-views

or задайте свой вопрос.

Понравилась статья? Поделиться с друзьями:
Добавить комментарий

;-) :| :x :twisted: :smile: :shock: :sad: :roll: :razz: :oops: :o :mrgreen: :lol: :idea: :grin: :evil: :cry: :cool: :arrow: :???: :?: :!: