2013-08-04 3 views
17

Я хочу использовать чистую html-страницу вместо cshtml с MVC .net. Но когда я добавляю просмотр, щелкнув правой кнопкой мыши, я вижу только два варианта.Использование Html вместо csHtml

public class HomeController : Controller 
{ 
    // 
    // GET: /Home/ 

    public ActionResult Index() 
    { 
     return View(); 
    }} 
  1. Cshtml (Razor)
  2. Aspx

Я последовал Can I serve .html files using Razor as if they were .cshtml files without changing the extension of all my pages?

форум, но до сих пор нет помощи. Я до сих пор не вижу возможности добавить html вместо cshtml

Я также попытался добавить html-страницу непосредственно для просмотра папки, но я не знаю, как указать этот вид из моей функции контроллера.

Замена Index.cshtml с Index.html дал мне эту ошибку

The view 'Index' or its master was not found or no view engine supports the searched locations. The following locations were searched: 

~/Views/Home/Index.aspx 
~/Views/Home/Index.ascx 
~/Views/Shared/Index.aspx 
~/Views/Shared/Index.ascx 
~/Views/Home/Index.cshtml 
~/Views/Home/Index.vbhtml 
~/Views/Shared/Index.cshtml 
~/Views/Shared/Index.vbhtml 
+0

вы пытаетесь служить новый HTML-страницу бренда без его внутри основного макета? – sergioadh

+0

http://stackoverflow.com/questions/1292475/can-i-stick-a-regular-html-page-in-an-asp-net-mvc-site#answer-1292529 этот ответ в POST также работает хорошо .... – Savaratkar

+0

Может ли кто-нибудь исправить отступ/форматирование кода в этом сообщении? – jrh

ответ

11

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

@{ 
    Layout = null; 
} 

Таким образом, вы используете файл cshtml который не использует мастер-файл макета. И просто служит тому, что вы вложили в него.

1

Если вы щелкните правой кнопкой мыши на папку Content вы можете выбрать «Добавить новый элемент ...». Затем вы можете выбрать «Web» в дереве слева и выбрать «HTML-страницу» справа.

Это должно добавить вам HTML-страницу.

+0

Я не знаю, как заставить мой контроллер указывать на этот html-файл. Также отредактирован вопрос, чтобы сделать его более понятным. – user2132017

+2

Контроллеры (или, скорее, действия) привязаны к представлениям. Вы не будете обслуживать эти страницы через контроллеры, вы будете обслуживать их с помощью старомодных [якорных тегов] (http://www.w3schools.com/tags/tag_a.asp) –

+0

@ user2374966 Возможно, лучше всего прочитать как работает MVC в ASP.NET, с одной стороны, существует целая механика MVC с маршрутами, контроллерами, представлениями и представлениями, с другой стороны, есть простой-старый контент. Ваш HTML-файл, такой как CSS, изображения и т. Д., Будет простым-старым. Просто файл размещен где-то доступным на сервере. –

-2

Добавить файл. Переименуйте его. F2 в проводнике решений.

+0

Переименование это дало мне ошибку. Я отредактировал сообщение, чтобы включить ошибку – user2132017

+0

Конечно. Моя вина. Просто назовите его cshtml, но скопируйте его как html. См. Ответ от @sergioadh. – LosManos

8

Если это статический html-файл, вам не нужно указывать на него свой контроллер, потому что IIS может обслуживать их просто отлично. Добавьте в проект html-файл (где угодно, но НЕ в папке views), и укажите ваш браузер в этот файл.

10

Для того, чтобы сделать простой HTML файл, который вы можете использовать

return new FilePathResult(HtmlPath, "text/html"); 

где HtmlPath является

Server.MapPath(string.Format("~/Views/{0}/{1}.html", YourControllerName, YourHtmlfileName)) 
+2

Спасибо, это действительно правильный ответ. Принятый ответ был * не * чистым HTML, а другие ответы не позволяли правильной маршрутизации и работы контроллера. –

+0

Добро пожаловать Дэйв, я рад, что он работает на вас. – abdulbasit

+0

Я хочу использовать только .html-файл (я не хочу, чтобы код на стороне клиента и код на стороне сервера смешивались). Я попробовал ваше предложение ... все в порядке, но у меня проблема: «как я могу использовать макет»? – Deka

Смежные вопросы