Сайт MVC против маршрутизации виртуальных приложений - PullRequest
0 голосов
/ 04 октября 2011

Мы используем TFS для развертывания наших приложений в нескольких средах (Dev, QA, Prod). Достаточно просто, наши среды Dev и QA имеют URL-адреса, такие как dev.domain / APPLICATION и qa.domain / APPLICATION. Таким образом, у нас есть один сайт с каждым приложением в качестве виртуального приложения.

Однако в процессе производства они хотят, чтобы каждое приложение имело свой собственный сайт, например APPLICATION.domain.com ... Grrr! В Visual Studio свойства приложения настроены на «виртуальный путь». Я не уверен, как мне поступить с этой проблемой. Приложение содержит код, такой как: <a href='/APPLICATION/File/Download?id=<#= PkFileId #>'><#= Name #></a>, который вызывает проблемы в работе, поскольку его нет в виртуальном приложении.

Я мог бы создать сайт под названием application.domain.com с пустым каталогом. Затем добавьте виртуальное приложение, но тогда я должен был бы поместить перенаправление в корень сайта, чтобы перейти к виртуальному приложению. Или, может быть, я могу как-то настроить приложение? Не уверен, что мои варианты ... Любые предложения приветствуются!

1 Ответ

2 голосов
/ 04 октября 2011

Приложение содержит код, такой как:

<a href='/APPLICATION/File/Download?id=<#= PkFileId #>'><#= Name #></a>

Приложения ASP.NET MVC не должны содержать подобный код (код, в котором URL-адреса жестко закодированы).В приложениях ASP.NET MVC вы всегда должны использовать помощники HTML и Url:

@Html.ActionLink(
    Model.Name, 
    "Download", 
    "File", 
    new { id = Model.PkFileId }, 
    null
)

Таким образом, несомненно, что независимо от того, как настроены ваши маршруты или в каком виртуальном каталоге размещено ваше приложение, оно должно работать.


ОБНОВЛЕНИЕ:

После вашего комментария похоже, что вы используете Telerik Grid.В этом случае вы можете попробовать что-то подобное, чтобы создать правильные якоря:

columns
    .Bound(x => x.PkFileId)
    .ClientTemplate(
        Html.ActionLink(
            "<#= Name #>", 
            "Download", 
            "File", 
            new { id = "<#= PkFileId #>" }, 
            null
        ).ToString()
    )
    .Title("");
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...