#c# #asp.net-mvc-5
#c# #asp.net-mvc-5
Вопрос:
Приложение управляет запросами. Существует 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});
Комментарии:
1. Работает ли добавление null в конце
new {id = item.RS_RequestID.ToString()}, null)
?
Ответ №1:
Правильная перегрузка для вашей ActionLink будет
HtmlHelper.ActionLink(string linkText,string actionName,string ControllerName, object routeValues, object htmlAttributes);
таким образом, вам не хватает атрибутов object htmlAttributes, которые вы можете передать как null
@Html.ActionLink("Reset","ResetRequest","Browse", new {id = item.RS_RequestID.ToString() }, null);
Комментарии:
1. Да — это также работает для меня. Поскольку это более полное выражение, я решил использовать это решение. Большое спасибо.
Ответ №2:
Порядок значений, которые вы передаете в ActionLink, неверен
используйте действие, контроллер, значения маршрута, htmlАргументы
Вашим первым аргументом должен быть ResetRequest
Ответ №3:
Ваше предложение привело к ошибке «ресурс не найден». Это заставило меня задуматься, что, возможно, я использовал неправильную подпись для ActionLink.
Я нашел переопределение, которое не указывало контроллер — только действие. Это то, что сработало для моих целей
@Html.ActionLink(
"Reset",
"ResetRequest",
new { id = item.RS_RequestID.ToString() });