Ser*_*gio 15 asp.net asp.net-mvc action-filter
我有一个场景,每个页面请求我必须检查会话中是否存在特定ID.如果找到这个,我必须从数据库中获取一个相关对象,并使其可供控制器使用.如果未找到会话ID,则需要重定向用户(会话已过期).
目前我有一个自定义的代码块(几行),它在我的控制器中的每个动作方法的开头执行此操作 - 这似乎是不必要的重复.
这种情况是否值得一个Action Filter?
谢谢
更新这里的一些很棒的信息.谢谢
dev*_*tal 10
是的,这听起来像是一个动作过滤器的良好应用,因为您可以在控制器级别应用它来操作所有操作.如果您不想手动将其添加到所有控制器,或者编写自己的控制器工厂(自动将此操作过滤器应用于每个控制器),您也可以将其作为控制器基类的一部分.
请参阅自定义操作过滤器到操作的ASP.NET MVC Pass对象,以将数据从操作过滤器传递到操作.
像这样创建一个基本控制器
public class MyContollerController : Controller
{
public DataEntity userData;
protected override void Initialize(System.Web.Routing.RequestContext requestContext)
{
base.Initialize(requestContext);
var customId = requestContext.HttpContext.Session["key"];
if(customId!=null)
{
userData=getDataGromDataBase(customId);
}
else
{
//redirect User
}
}
}
Run Code Online (Sandbox Code Playgroud)
现在创建像这样的ur控制器
public class MyDemoController : MyContollerController
{
public ActionResult Action1()
{
//access your data
this.userData
}
public ActionResult Action2()
{
//access your data
this.userData
}
}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
12740 次 |
| 最近记录: |