MVC пользовательские маршруты и ActionLinks

Мы работаем с asp.net mvc приложение, которое совместно используется несколькими клиентами. Нам нужны URL для включения клиентского URL дружественное имя. Например:

domain.com/clientName/controller/action/id

Это ниже, кажется, работает когда дело доходит до маршрутизации, но "имя клиента" не сгенерировано правильно для помощников ссылки действия.

_routes.MapRoute("DefaultRoute",
                "{clientName}/{controller}/{action}/{id}",
                new { controller = "Home", action = "Index", id = string.Empty },
                new { clientName = @"[\w-]+" });

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

Кто-либо еще создал приложение с этим типом сценария маршрутизации? Любые предложения ценились бы!

5
задан Thad 18 January 2010 в 20:59
поделиться

3 ответа

int arr [что угодно] внутренний список аргументов функции определяет указатель , а не массив. Следовательно, информация о длине теряется навсегда.

почему!?

Чтобы понять почему, вы должны понять, что такое Си. C никогда не копирует сложные куски вокруг неявно. Поэтому, когда вы говорите «передайте мне массив», это на самом деле означает «я хочу передать адрес, имя этого массива обычно».

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

-121--3027980-

Как использовать что-то подобное:

http://www.zoomify.com/

-121--3978118-

То, что вы пытаетесь сделать, должно работать без использования RoityLink или указания анонимного объекта. Проверьте правильность регистрации маршрута. Например, если перед DefureRoute имеется что-то вроде

routes.MapRoute("Base", 
                string.Empty,
                new { controller = "Home", 
                action = "Index", 
                id = string.Empty });

, это может привести к тому, что вызовы ActionLink вернут странные результаты. Я был сожжен этим раньше.

0
ответ дан 18 December 2019 в 09:07
поделиться

Это был мой опыт того, что метод действий, указанный DARIN, будет генерировать как:

http://host/Home/action?clientName=someClient

, если вы хотите создать URL именно так, как вы указали. Проверьте метод метода RouteLink , который позволяет указать имя маршрута, который вы соответствуете:

<%= Html.RouteLink("some text", "DefaultRoute", new { clientName = "someclient" })%>
11
ответ дан 18 December 2019 в 09:07
поделиться

Вам необходимо указать значения маршрута:

<%= Html.ActionLink("some text", "action", new { clientName = "someclient" })%>

будет генерировать:

http://host/someclient/Home/action

Вы также можете указать значение по умолчанию при объявлении маршрута:

_routes.MapRoute("DefaultRoute",
    "{clientName}/{controller}/{action}/{id}",
    new { 
        controller = "Home", 
        action = "Index", 
        id = string.Empty, 
        clientName = "defaultClient" },
    new { clientName = @"[\w-]+" });
7
ответ дан 18 December 2019 в 09:07
поделиться
Другие вопросы по тегам:

Похожие вопросы: