Метод контроллера MVC для просмотра с дополнительным параметром Guid - PullRequest
0 голосов
/ 01 ноября 2018

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

public ActionResult Roles(Guid applicationId)
    {
        if (applicationId == Guid.Empty)
        {
            return View();
        }

        var application = new ApplicationStore().ReadForId(applicationId);

        return View(application);
    }

Я знаю, что для необязательных параметров вы бы сделали что-то вроде Guid? в параметрах, но визуальным студиям это не нравится, и я не могу сделать Guid application = null. Есть идеи?

Ответы [ 2 ]

0 голосов
/ 01 ноября 2018

Как вы уже упоминали, сделайте параметр необязательным.

public ActionResult Roles(Guid? id) {
    if (id == null || id.Value == Guid.Empty) {
        return View();
    }

    var application = new ApplicationStore().ReadForId(id.Value);

    return View(application);
}

Это также предполагает маршрут по умолчанию, основанный на соглашении

"{controller}/{action}/{id}"

Где идентификатор необязателен в шаблоне маршрута.

id = UrlParameter.Optional

Например

routes.MapRoute(
     name: "SomeName",
     url: "{controller}/{action}/{id}",
     defaults: new { controller = "Account", action = "Index", id = UrlParameter.Optional }
 );
0 голосов
/ 01 ноября 2018

Вы можете просто изменить параметр Guid на string. Guid.Empty = 00000000-0000-0000-0000-000000000000, что может вызвать проблемы при попытке передать нулевое значение. если вы переключаете его на что-то вроде этого (но все равно используете Guid):

public ActionResult Roles(string applicationId)
{
    if (string.IsNullOrEmpty(applicationId))
    {
        return View();
    }

    var application = new ApplicationStore().ReadForId(applicationId);

    return View(application);
}

может обойти ошибки, с которыми вы сталкиваетесь.

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