Почему жесткое кодирование строк URL в приложении MVC - плохая идея?(Либо это?) - PullRequest
3 голосов
/ 16 января 2012

В комментарии к этому вопросу , Фил упоминает, что

Жесткое кодирование строк URL в приложении MVC - плохая идея.Помощники там по причине

Это так?Если так, то почему?

Ответы [ 3 ]

5 голосов
/ 16 января 2012

Генерация URL-адреса является результатом настройки маршрута в global.asax вашего приложения.При использовании таких помощников, как ActionLink, они проверяют конфигурацию маршрутов и соответственно генерируют маршруты.

Если вы позже измените конфигурацию маршрута или установите приложение в виртуальный каталог, URL-адреса, сгенерированные помощниками во всем приложении, динамически изменятся, поэтому вам не придется проверять и изменять каждую жестко закодированную строку URL-адреса вручную, иВаше приложение с меньшей вероятностью сломается.

Если вы хотите разметить якоря, вы можете использовать UrlHelper.Action Method .Внутренне все помощники, которые зависят от генерации URL, используют этот метод.

<a href="@Url.Action("Logon", "Account")">logon<a>
0 голосов
/ 16 января 2012

Я бы предпочел не использовать Url.Action («Вход в систему», «Учетная запись»), так как он жестко запрограммирован и любое изменение имени действия трудно идентифицировать.

Лучше мы можем написать расширение как,

     public static MvcHtmlString ActionLink<TController>(this HtmlHelper helper,
 Expression<Func<TController, object>> expression, string displayText)
            {
                string controller = typeof(TController).GetControllerName();
                string action = expression.GetActionName();

                return helper.ActionLink(displayText, action, controller);
            }

, а затем используйте его в виде, как,

@Html.Action<AccountController>(a=>a.Logon(),"Click here")
0 голосов
/ 16 января 2012

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

Это было маленькое веб-приложение, и оно все еще толкало меня на стену. Я бы последовал этому совету:)

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