【发布时间】:2015-08-02 19:10:41
【问题描述】:
我使用的是 orchardcms 1.9(没有创建标签的 jet)。我正在编写一个自定义模块,它实现了它自己的控制器,它调用一个服务来检查一些信息,并根据我重定向或让用户留在页面上的服务响应。
模块在默认层上,换句话说,它在每个页面上。因此,当用户尝试登录或注册此模块时,会正常检查信息。
这是我的路线:
new RouteDescriptor {
Priority = -1,
Route = new Route(
"{*path}", // this is the name of the page url
new RouteValueDictionary {
{"area", "modulename"}, // this is the name of your module
{"controller", "controllername"},
{"action", "Redirect"}
},
new RouteValueDictionary(),
new RouteValueDictionary {
{"area", "modulename"} // this is the name of your module
},
new MvcRouteHandler())
这是我的控制器:
public ActionResult Redirect()
{
String response = _authService.VerifyRegistration(_orchardServices.WorkContext.CurrentUser);
if (response.Equals("2"))
{
Response.Redirect("~/Registration");
}
else if (response.Equals("3"))
{
Response.Redirect("~/Users/Account/LogOn");
}
return View();
}
发生的情况是,当我去注册或登录控制器触发器时,检查信息,说不需要重定向然后返回视图。但是因为视图是空的,所以我的页面是空白的,而不是其默认的登录/注册表单。
我该如何解决这个问题?我是否在路由中犯了一个错误,我以某种方式覆盖了默认视图(我尝试了不同的优先级但相同的响应)。
【问题讨论】:
-
你不应该在控制器操作中使用
Response.Redirect(或者甚至Response)。请改用重定向结果。 -
是的,我用谷歌搜索了,但不重定向时的问题仍然相同,返回的视图覆盖了登录/注册页面的默认视图。我相信这是因为路由覆盖了默认操作但不知道如何避免这种情况。
-
嗯,完全不清楚您期望会发生什么。
-
当我进入登录页面时,我希望出现登录页面。但是由于我的自定义路由和控制器,登录页面是空白的。
标签: model-view-controller controller routes orchardcms