C# 菜单控制器上的.NET MVC路由重定向到特定控制器
我有以下问题: 当我单击视图上的菜单项按钮时,我到达C# 菜单控制器上的.NET MVC路由重定向到特定控制器,c#,asp.net,asp.net-mvc,routes,C#,Asp.net,Asp.net Mvc,Routes,我有以下问题: 当我单击视图上的菜单项按钮时,我到达MenuControllermethodRedirectAction: public ActionResult RedirectAction(string actionRedirect, int moduloAtual) { TempData["ModuloAtual"] = moduloAtual; var botaoVoltarSubMenu = Request["voltar"];
MenuController
methodRedirectAction
:
public ActionResult RedirectAction(string actionRedirect, int moduloAtual)
{
TempData["ModuloAtual"] = moduloAtual;
var botaoVoltarSubMenu = Request["voltar"];
ViewBag.baseUsuario = Request["baseUsuario"];
var redirect = string.Empty;
if (botaoVoltarSubMenu == "1")
{
redirect = $"{Url.Content("~")}{actionRedirect}?baseUsuario={ViewBag.baseUsuario}";
}
else
{
redirect = $"{Url.Content("~")}{actionRedirect}";
}
return Redirect(redirect);
}
我面临的是,在返回重定向(Redirect)
之后,我浏览器上的URL显示了这一点(我的actionRedirect值是Notas
:
http://localhost:40169/Menu/RedirectAction?actionRedirect=Notas&moduloAtual=40000
并且不会重定向到my/Notas控制器
这与RouteConfig有关吗
My RouteConfig.cs:
public static void RegisterRoutes(RouteCollection routes)
{
routes.IgnoreRoute("{resource}.axd/{*pathInfo}");
routes.MapRoute(
name: "Default",
url: "{controller}/{action}/{intID}",
defaults: new { controller = "Home", action = "Index", intID = UrlParameter.Optional }
);
}
我做错了什么?我只想重定向到与我的actionRedirect
参数名具有相同值的控制器
请,帮助!并提前感谢!您确定要在代码中添加如此复杂的简单菜单重定向吗?听起来您只需要使用我们的“无操作”参数重定向到特定的控制器/操作
Redirect
方法不会重定向到控制器,而是重定向到URL字符串。RedirectToAction
将允许您指定操作和控制器,但您似乎没有对指定的控制器执行实际操作
以下内容将重定向到actionRedirect
参数中指定的控制器上的Index
操作:
public ActionResult RedirectAction(字符串actionRedirect,int-moduleator)
{
TempData[“模块化”]=模块化;
var BOTAOVERTARSUBMENU=请求[“电压”];
ViewBag.baseUsuario=请求[“baseUsuario”];
如果(BOTAOVERTARSUBMENU==“1”)
{
返回RedirectToAction(“Index”,actionRedirect,new{baseUsario=ViewBag.baseUsario});
}
返回重定向操作(“索引”,重定向操作);
}
如果操作为actionRedirect
,并且应始终使用Notas
控制器,则更改为:
return RedirectToAction(redirectAction,“Notas”,new{baseUsario=ViewBag.baseUsario});
返回重定向操作(重定向操作,Notas);
实际上,我是这样得到这个系统的,这个方法已经实现了,但由于某种原因不起作用。这是我在菜单上的div,它调用controller方法:这是一个用数据库模块创建的动态菜单。因此,每次单击,我都有一个不同的对象和moduleId,传递给MenuController处理对我来说,然后重定向。@Rodrigassis这很有意义。请参阅我的更新答案,在您的实现中发现一个可能禁止访问您的操作的问题
<a href="@Url.Action("Index", "Notas", new { moduloAtual = 4000 })">Notas</a>
<div class="box-button text-center hvr-grow-shadow" onclick="window.location = '@Url.Action("RedirectAction", "Menu", new {actionRedirect = obj, moduloAtual = idModulo})'">