1

我正在为一家销售一些产品的公司开发应用程序,该应用程序负责管理产品更改和退货。更改和返回有不同的规则,但“屏幕/视图”都是相同的。此应用程序必须为每种类型提供不同的 URL。例如:

www.company.com/change

www.company.com/return

应用程序也需要有一个Login页面。

当我访问 www.company.com/CHANGE 时,用户被重定向到登录页面,并且在此页面中有一个带有change文本的标签。

当我访问 www.company.com/RETURN 时,用户被重定向到登录页面,并且在此页面中有一个带有return文本的标签。

问题是:如何通过页面持久化这种类型,提醒如果用户在应用和注销的认证区域内,他必须返回正确的登录页面,并带有正确的标签文本。

我试图将类型存储在 Session 中,但是如果会话结束,就不可能知道我必须如何将参数传递给登录页面(更改或返回)

我也尝试过,创建一个新的路由Global.asax来保持类型,就像这样:

routes.MapRoute(
    "qwert", // Route name
    "{type}/{controller}/{action}/{id}", // URL with parameters
    new { controller = "Login", action = "Index", id = UrlParameter.Optional } // Parameter defaults
);

但是这个网址例如:“xxx/home/list”匹配,我想要那个

return/abc/abc 

change/abc/abc 

匹配。

在流程结束时,我将使用这种类型在数据库中保留一条记录。

我该如何解决这种情况?

4

1 回答 1

1

问题需要澄清一下,但如果我理解正确,只需处理包含 {type} 参数的所有链接和 URL。

我做了一个小测试,得到的是:

global.asax中:

public static void RegisterRoutes(RouteCollection routes)
{
    routes.IgnoreRoute("{resource}.axd/{*pathInfo}");

    routes.MapRoute(
      "qwert", // Route name
      "{type}/{controller}/{action}/{id}", // URL with parameters
      new { controller = "Login", action = "Index", type = "", id = UrlParameter.Optional } // Parameter defaults
    );
}

LoginController中,您可以获得如下类型:

public ActionResult Index(string type)
{
    return View();
}

您可以为会话的到期创建一个自定义属性,如此处所述,并将用户返回到相应的页面 www.company.com/{type }

于 2013-01-16T14:32:59.267 回答