我正在为销售某些产品的公司开发应用程序,该应用程序负责管理产品变更和退货。变更和退货有不同的规则,但"屏幕/视图"都是一样的。此应用程序必须为每种类型使用不同的URL。例如:
www.company.com/change
www.company.com/return
应用程序也需要有一个Login
页面。
当我访问www.company.com/CHANGE时,用户被重定向到登录页面,并且在此页面中有一个带有change
文本的标签。
当我访问www.company.com/RETURN时,用户被重定向到登录页面,并且在此页面中有一个带有return
文本的标签。
问题是:如何通过页面保持此类型,提醒如果用户位于应用程序和注销的身份验证区域内,他必须返回正确的登录页面,并带有正确的标签文本。
我尝试将类型存储在Session中,但如果会话结束,则无法知道参数i必须如何传递到“登录”页面(更改或返回)
我也尝试过,在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
匹配。
在此过程的最后,我将在此类型的数据库中保留记录。
我该如何解决这种情况?
答案 0 :(得分:1)
问题需要一些澄清,但如果我理解正确,只需处理包含{type}参数的所有链接和网址。
我做了一个小测试,我得到的是:
在 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();
}
您可以为会话过期创建自定义属性,如Here所述,并将用户返回到相应页面www.company.com/{type}