从业务逻辑类重定向asp.net mvc页面

Kyl*_*yle 7 asp.net-mvc redirect routes

我在业务逻辑层中调用静态方法,出于我在此不提及的目的,需要重定向本身,而不是将信息返回给控制器以进行重定向.

我想我需要使用HttpContext对象,但我正在努力创建路由.我不能简单地做context.Response.Redirect("someController/someMethod)因为我需要包含我发送给用户的动作控制器的参数.

假设这是正确的:

HttpContext context = HttpContext.Current;
Run Code Online (Sandbox Code Playgroud)

任何人都可以提供一些语法帮助,如何使用如下对象创建路由:

new { Controller = "MyController", action = "Index", OtherParm="other value" }
Run Code Online (Sandbox Code Playgroud)

TIA

Dar*_*rov 14

非常丑陋,反MVC,不要在业务层等做...但是因为你问:

var context = new RequestContext(
    new HttpContextWrapper(System.Web.HttpContext.Current), 
    new RouteData());
var urlHelper = new UrlHelper(context);
var url = urlHelper.Action("Index", new { OtherParm = "other value" });
System.Web.HttpContext.Current.Response.Redirect(url);
Run Code Online (Sandbox Code Playgroud)

  • 因为BLL注定要用于不同类型的应用程序.想象一下,例如,您需要开发一个需要BLL功能的WinForms应用程序,或者将此功能作为SOAP Web服务公开给合作伙伴(因为您的合作伙伴使用Java).在Windows应用程序中讨论HttpContext,重定向和Web内容是完全没有意义的.每次引用System.Web.dll并在业务层中使用HttpContext.Current时,您只能将其使用范围缩小到Web应用程序,在您的情况下甚至更窄:ASP.NET MVC Web应用程序. (3认同)
  • 抱歉在这里击败了一匹死马.但是你可以向我提供一个论据,说明为什么应该将这个逻辑放在控制器中?我只是想绕过MVC的东西,并不完全理解为什么把它放在BLL中是个坏主意.... (2认同)