如何'键入'我的应用程序,通过页面持久保存此类型

时间:2013-01-16 14:29:52

标签: c# asp.net-mvc asp.net-mvc-3

我正在为销售某些产品的公司开发应用程序,该应用程序负责管理产品变更和退货。变更和退货有不同的规则,但"屏幕/视图"都是一样的。此应用程序必须为每种类型使用不同的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 

匹配。

在此过程的最后,我将在此类型的数据库中保留记录。

我该如何解决这种情况?

1 个答案:

答案 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}