ASP.NET MVC - Отображение больше чем одного параметра строки запроса к симпатичному URL

Вы можете сделать что-то вроде этого,

public function createLogin($user)
{
    if (is_a($user, 'App\User')) 
    {
       // Create your user here     
    } 
    elseif(is_a($user, 'App\DemoUser'))
    {
     // create demo user here   
    }
}
7
задан 7 January 2009 в 14:54
поделиться

5 ответов

Предположение, что позволенные значения для местоположения и порядка уникальны (т.е. когда они входят, можно сказать им независимо, или иначе если они только предоставляют один, как Вы собираетесь знать, является ли это местоположение или порядок?), затем Вы могли просто вынуть два параметра и работать, что они находятся в контроллере.

Маршрут: {controller}/{action}/{param1}/{param2}

Действие контроллера:

public ActionResult MyAction(string param1, string param2)
{
    string location;
    string order;
    if (!ParseLocation(param1, out location))
    { ParseLocation(param2, out location); }
    // ...
}

Не особенно изящный, но действительно позволяет Вам иметь URL, которые Вы хотите.

2
ответ дан 6 December 2019 в 09:23
поделиться

Нажмите на свою ссылку на профайл и посмотрите на URL для Статистики, Недавней, Ответ, и т.д.

Примеры:

без вида это принимает значение по умолчанию к статистике

Дополнительные параметры должны быть параметрами запроса

14
ответ дан 6 December 2019 в 09:23
поделиться

У Вас всегда будет эта проблема, если у Вас будет несколько дополнительных параметров. Или сделайте один или они оба обязательный (и расположенный ранее в строку запроса, чем дополнительная) или используйте querystring нотацию параметра.

2
ответ дан 6 December 2019 в 09:23
поделиться

хорошо парни, просто отправляющие решение, я играл с до сих пор.

Я настроил свои маршруты с помощью ограничений следующим образом:

        routes.MapRoute(
            "VenuesList",                                              
            "venues/list/{category}/{location}/{orderBy}",             
            new { controller = "venues", action = "list", category = "", location = "", orderBy = "" },
            new { location = "central|east|west|south", orderBy = "top-rated|price" }
        );

    routes.MapRoute(
            "VenuesListByLocation",                                              
            "venues/list/{category}/{location}",                           
            new { controller = "venues", action = "list", category = "", location = "" },
            new { location = "central|east|west|south" }
        );

        routes.MapRoute(
            "VenuesListByOrder",                                              
            "venues/list/{category}/{orderBy}",                           
            new { controller = "venues", action = "list", category = "", orderBy = "" },
            new { orderBy = "top-rated|price" }
        );

        routes.MapRoute(
            "VenuesListDefault",                                              
            "venues/list/{category}",                           
            new { controller = "venues", action = "list", category = "" }

        );

        routes.MapRoute(
            "Default",                                              
            "{controller}/{action}/{id}",                           
            new { controller = "Home", action = "Index", id = "" }  // Parameter defaults
        ); 

Идея - это, если сбои проверки она перейдет к следующему маршруту в списке... в конечном счете удар значения по умолчанию.

Потребности еще некоторое тестирование, но работали хорошо до сих пор...

2
ответ дан 6 December 2019 в 09:23
поделиться

Почему Вы не создаете свойство на странице для каждого возможного querystring параметра?

Таким образом, можно обработать его любой способ, которым Вы выбираете со всего несколькими строками кода...

0
ответ дан 6 December 2019 в 09:23
поделиться
Другие вопросы по тегам:

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