2013-07-17 2 views
0

Virtuall каждое приложение ASP, которое я написал (сотни), следует точно такой же схеме. «Одностраничное приложение» с верхним и нижним колонтитулом и динамически обновляемая область содержимого, которая изменяется в зависимости от того, что происходит/в URL-адресе. Что-то вроде следующего (очень упрощено, но демонстрирует принцип):Можно ли дублировать этот классический шаблон ASP в ASP.NET MVC?

[% select case lcase(request("action") %] 
[% case "home" %] 
    [div class='class_home'...] 
     Home Screen HTML/Script/ASP 
    [/div] 
[% case "enroll" %] 
    [div class='class_enroll'...] 
     Enroll Screen HTML/Script/ASP 
    [/div] 
[% case "checkout" %] 
    [div class='class_checkout'...] 
     [!-- if it's gonna be lengthy, will often do this instead: --] 
     [!-- 
      #include file=CHECKOUT.inc.asp 
     --] 
    [/div] 
[% end select %] 

Эта модель может даже быть вложена несколько слоев глубоко с дополнительным запросом («поддействие») подрайоны/подформом участием. Каждая форма отправляет себя ([form action = "" method = POST]), а сценарий asp в верхней части улавливает форму и обрабатывает ее, а затем продолжается.

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

Это даже хорошая идея ХОТИТЕ это сделать? Или есть лучший способ достичь той же цели «одностраничного приложения»?

Спасибо!

EDIT: Вот пример. Он устарел уже несколько лет, но он демонстрирует структуру дизайна, о которой я говорю. Могу ли я сделать что-то такое сложное в MVC?

http://www.pdqauction.com

Если вы хотите войти в систему, используйте код аукциона «Wallace», и «гость» и как имя и пароль. Вы можете видеть, с чем я столкнулся при переключении на MVC. Это не просто, webapps. Время от времени оно становится довольно сложным. Мне нужно знать, смогу ли я сделать это в MVC так же легко, как ASP.

+0

Это не то, что подразумевается под термином Single Page App. Это называется спагетти-кодом и рассматривается и анти-шаблон. –

ответ

0

Это все еще то же самое в MVC. Если вы используете Razor, найдите файл _Layout.cshtml в /Views/Shared. Если вы используете старый механизм ASP.Net, он будет находиться в том же месте, но называется MasterPage.

Кроме того, есть файл под названием _ViewStart.cshtml. Это автоматически инициируется каркасом, и именно это указывает на файл _Layout.cshtml.

1

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

В MVC вы используете частичные и макетные страницы, чтобы избежать повторения кода. Вот хороший обзор http://weblogs.asp.net/scottgu/archive/2010/12/30/asp-net-mvc-3-layouts-and-sections-with-razor.aspx

0

Я добавлю немного больше предложений по использованию _ViewStart.cshtml и _Layout.cshtml. Убедитесь, что вы используете строго типизированное представление для всех ваших видов, и каждая модель просмотра расширяется от базового класса «Вид модели», который имеет все «общие» данные, такие как состояние меню, состояние входа и т. Д.

Вы бы просто сделайте это с использованием ineritance:

public class MyBaseViewModel 
{ 
    public string UserName { get; set; } 
    //other properties 
} 

public class MySampleViewModel : MyBaseViewModel 
{ 
    //additional properties for this View only 
} 
Смежные вопросы