Параметры ActionLink всегда нулевые - даже при настраиваемой маршрутизации - PullRequest
0 голосов
/ 02 апреля 2019

Приложение управляет запросами. Существует ActionLink, который должен передавать идентификатор запроса, чтобы его можно было сбросить. Правильный контроллер / действие вызывается, но идентификатор запроса всегда нулевой.

Если я изменю последний параметр пользовательского маршрута (показанный ниже) на id = "TEST", то в функцию передается "TEST" - поэтому я знаю, что выбран правильный маршрут.

В контроллере BrowseController.cs

 [HttpGet]
 public ActionResult ResetRequest(string id )
 {
   return View();
 }

В View BrowseRequests.cshtml есть ссылка для сброса запроса

    @Html.ActionLink(
    "Reset", 
    "ResetRequest", 
    "Browse", 
    new {id = item.RS_RequestID.ToString() });

Я попробовал маршрутизацию по умолчанию в RouteConfig.cs, а затем попытался вставить следующее до значения по умолчанию.

    routes.MapRoute(
       name:"ResetRequest",
       url:"Browse/ResetRequest/{id}",
       defaults: new { controller = "Browse", 
                       action = "ResetRequest", 
                       id=UrlParameter.Optional});

Ответы [ 3 ]

0 голосов
/ 02 апреля 2019

Ваше предложение привело к ошибке "ресурс не найден". Это заставило меня задуматься о том, что, возможно, я использовал неправильную подпись для ActionLink.

Я нашел переопределение, в котором не указан контроллер - только действие. Вот что сработало для моих целей

    @Html.ActionLink(
      "Reset", 
      "ResetRequest", 
      new { id = item.RS_RequestID.ToString() });
0 голосов
/ 02 апреля 2019

Правильная перегрузка для вашей ActionLink будет

HtmlHelper.ActionLink(string linkText,string actionName,string ControllerName, object routeValues, object htmlAttributes);

так что вам не хватает htmlAttributes объекта, который вы можете передать как ноль

@Html.ActionLink("Reset","ResetRequest","Browse", new {id = item.RS_RequestID.ToString() }, null);
0 голосов
/ 02 апреля 2019

Порядок значений, передаваемых в ActionLink, неверен

использовать действие, контроллер, значения маршрута, htmlArguments

Ваш первый аргумент должен быть ResetRequest

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