Как я могу сделать этот маршрут (ASP.Net MVC2)? - PullRequest
0 голосов
/ 11 апреля 2010

Я новичок в asp.net mvc, и у меня есть несколько советов о маршрутах.

Я разрабатываю систему для управления документами, и мне нужно создать URL-адрес, подобный следующему:

        routes.MapRoute("Documentos",
            "{controller}/{documentType}/{documento}/{action}/{id}",
            new
            {
                controller = "Home",
                documentType = "",
                documento = "",
                action = "Index",
                id = UrlParameter.Optional
            });

и приложение, работающее с URL-адресом, подобным тезисам:

«Документ / Административный / Контракт» - (Индексное действие по умолчанию для перечисления документов типа «Контракт») «Документ / Административный / Контракт / Новый» - (новое действие в контроллере) «Документ / Административный / Контракт / 10» - (подробное действие в контроллере) «Документ / Административный / Контракт / Редактировать / 10» - (редактировать действие в контроллере)

Документ будет Контролером, а Административный будет просто описанием в URL, чтобы идентифицировать, что документы «Контракта» являются Административными ...

Итак, мои сомнения связаны с моими контроллерами и действиями. Как должна быть подпись методы контроллера? Нужно ли мне сделать область под названием Документы, чтобы сделать это проще?

PS: простите за мой английский!

Большое спасибо, Ура!

Фелипе

Ответы [ 2 ]

0 голосов
/ 11 апреля 2010
 routes.MapRoute("Documentos", 
            "Document/{documentType}/{documento}/{action}/{id}", 
            new 
            { 
                controller = "Document", 
                documentType = "", 
                documento = "", 
                action = "Index", 
                id = UrlParameter.Optional 
            }); 

Если вы хотите, чтобы URL-адрес «Документ / Административный / Контракт» по умолчанию был равен Списку, вы должны сделать жестко заданный маршрут, подобный этому:

 routes.MapRoute("Documentos", 
            "Document/Administrative/Contract", 
            new 
            { 
                controller = "Document", 
                documentType = "Administrative", 
                documento = "Contract", 
                action = "List"
            }); 

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

public ActionResult(string documentType, string documento, int id)

или

public ActionResult(Document doc)

если вы используете класс модели Document.

public class Document
string documentType;
string documento;
int id;

НТН

0 голосов
/ 11 апреля 2010

Просто есть 1 документ контроллера.

В этом контроллере есть действия Index , Новый и Редактировать.

Все действия должны иметь параметры documentType и documentmento или (лучше) у вас есть Viewmodel как параметр, имеющий свойства documentType и documentmento.

Передайте эту модель для просмотра. В представлении используйте Html.ActionLink для генерации ссылок, для которых установлен documentType и documentmen.

...