Как собрать .csproj с кодом C # 7 из командной строки (msbuild)

Я только что наткнулся на этот вопрос и, хотя сейчас он довольно старый, он по-прежнему очень уместен. Как ни странно, один правильный комментарий в этой теме был опубликован самонадеянным новичком в MVC, когда он написал сообщение. Даже документы ASP.NET не совсем корректны. У меня большой проект, и я успешно перегружаю методы действий.

Если понимать маршрутизацию, помимо простого шаблона маршрута {controller} / {action} / {id} по умолчанию, может быть очевидно, что действия контроллера могут быть сопоставлены с использованием любого уникального шаблона. Кто-то здесь говорил о полиморфизме и сказал: «HTTP не понимает полиморфизм», но маршрутизация не имеет ничего общего с HTTP.

Лучший способ сделать эту работу - использовать атрибуты маршрутизации, например:

[RoutePrefix("cars/{country:length(3)}")]
public class CarHireController
{
    [Route("{location}/{page:int=1}", Name = "CarHireLocation")]
    public ActionResult Index(string country, string location, int page)
    {
        return Index(country, location, null, page);
    }

    [Route("{location}/{subLocation}/{page:int=1}", Name = "CarHireSubLocation")]
    public ActionResult Index(string country, string location, string subLocation, int page)
    {
        //The main work goes here
    }
}

Эти действия будут позаботьтесь о таких URL, как /cars/usa/new-york и /cars/usa/texas/dallas, которые будут сопоставляться с первым и вторым действиями индекса соответственно.

Изучив этот примерный контроллер, очевидно, что он выходит за рамки шаблона маршрута по умолчанию, упомянутого выше. По умолчанию работает хорошо, если ваша структура URL точно соответствует соглашениям об именах кода, но это не всегда так. Код должен описывать домен, но URL-адреса часто должны идти дальше, потому что их контент должен основываться на других критериях, таких как требования к SEO.

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

Важное замечание Единственный недостаток заключается в том, что использование маршрутизации для генерации URL-адресов для перегруженных действий не работает, если оно основано на имени действия, например, , при использовании UrlHelper.Action. Но он работает, если вы используете именованные маршруты, например UrlHelper.RouteUrl. И использование названных маршрутов, согласно уважительным источникам, способ как-то идти ( http://haacked.com/archive/2010/11/21/named-routes-to-the-rescue.aspx/ ).

Удачи!

22
задан DmitryZyr 6 September 2019 в 08:44
поделиться