应用程序管理请求。有一个ActionLink应该传递请求的ID,以便可以将其重置。调用了正确的控制器/操作,但请求ID始终为空。
如果我将自定义路由的最后一个参数(如下所示)更改为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});
答案 0 :(得分:0)
您传递给ActionLink的值的顺序不正确
使用动作,控制器,路由值,htmlArguments
您的第一个参数应为ResetRequest
答案 1 :(得分:0)
您的建议导致出现“找不到资源”错误。这的确使我想到,也许我为ActionLink使用的签名不正确。
我发现没有指定控制器的替代项-只是操作。 这就是我的目的
@Html.ActionLink(
"Reset",
"ResetRequest",
new { id = item.RS_RequestID.ToString() });
答案 2 :(得分:0)
您的ActionLink正确的重载应该是
HtmlHelper.ActionLink(string linkText,string actionName,string ControllerName, object routeValues, object htmlAttributes);
因此您缺少可作为null传递的对象htmlAttributes
@Html.ActionLink("Reset","ResetRequest","Browse", new {id = item.RS_RequestID.ToString() }, null);