URL asp.net mvc - PullRequest
       11

URL asp.net mvc

1 голос
/ 22 июня 2009

На обычном веб-сайте URL отображается как:

http://www.mySite.com/Topics

обычно означает, что страница находится в подпапке под корнем с именем «Темы» и имеет страницу с именем default.htm (или аналогичной).

Я пытаюсь понять, как работает MVC, и достаточно разбираюсь в маршрутизации, чтобы знать, что я должен думать об URL-адресах иначе.

Итак, если у меня есть управляемая БД страница, которую я обычно пишу на физической странице, расположенной по адресу /Topics/index.aspx - как это выглядит в приложении MVC?

Mny THX --steve ...

Ответы [ 4 ]

1 голос
/ 22 июня 2009

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

Допустим, у вас есть такая структура в WebForms ASP.NET.

 -Topics
   -index.aspx
   -newtopic.aspx
   -topicdetails.aspx
 -Users
   -index.aspx
   -newuser.aspx
   -userdetails.aspx

Структура в приложении MVC будет почти одинаковой с точки зрения пользователя, но вместо сопоставления URL-адреса с папкой, вы сопоставляете URL-адрес с контроллером. Вместо папки (ресурса), в которой находятся файлы, она выполняет действия.

  -TopicController
    -index
    -new
    -details
  -UserController
    -index
    -new
    -details

Каждый из этих Actions будет затем решать, какое представление (будь то HTML или JSON / XML) должно быть возвращено в браузер.

Действия могут действовать по-разному в зависимости от того, к какому HTTP-глаголу они относятся. Например;

public class UserController : Controller
{
    public ActionResult Create()
    {
        return View(new User());
    }

    [AcceptVerbs(HttpVerbs.Post)]
    public ActionResult Create(User user)
    {
        // code to validate /save user

        if (notValid)
            return new View(user);
        else
            return new View("UserCreatedConfirmation");
    }
}

Это разновидность URL-адреса RESTful , на которую я рекомендую вам взглянуть. Они могут помочь упростить дизайн вашего приложения.

0 голосов
/ 22 июня 2009

ИМХО это то, что вам нужно для ваших маршрутов.

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

Вам потребуется TopicsController, для которого вы строите представление (разделы).

0 голосов
/ 22 июня 2009

Похоже, что вы хотите, чтобы это было.

Маршрутизация позволяет URL быть виртуальным. В asp.net mvc он заканчивается в указанном методе действия контроллера, который решает, что делать дальше (то есть - он может возвращать указанное представление, где бы он ни находился, он может возвращать обычный текст, он может возвращать что-то сериализованное в JSON / XML) ,

Вот некоторые внешние ссылки:
Введение в маршрутизацию URL от ScottGu
Обучающие материалы по ASP.NET MVC , Стефан Вальтер

0 голосов
/ 22 июня 2009

У вас будет представление по умолчанию, связанное с действием на контроллере Тем.

Например, страница списка (list.aspx) с другими представлениями, которая связана с действием списка контроллера темы.

Предполагается, что правила механизма маршрутизации по умолчанию можно изменить.

Подробнее здесь: http://weblogs.asp.net/scottgu/archive/2007/12/03/asp-net-mvc-framework-part-2-url-routing.aspx

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...