我在帐户控制器中有一个登录操作,根据用户权限重定向到不同的操作。我们处于这样一种情况:我们希望在重定向的操作响应结束时附加自定义html。我们有一个自定义的ActionFilterAttribute可以解决问题,但问题是我们事先不知道重定向的操作来注册自定义属性。那么如何将自定义ActionFilterAttribute动态注册到重定向的操作
提前致谢
这是过滤器
public class AppendModalWindow : ActionFilterAttribute
{
public override void OnResultExecuted(ResultExecutedContext filterContext)
{
base.OnResultExecuted(filterContext);
HubController objHubController = filterContext.Controller as HubController;
if (objHubController != null)
{
AccountController objAccController = new AccountController();
objAccController.ControllerContext = objHubController.ControllerContext;
if (objAccController.IsContractExpryChkReqd)
{
string strScript = objAccController.GetContractStatusModalWindow();
if (!string.IsNullOrEmpty(strScript))
{
filterContext.HttpContext.Response.Write(strScript);
}
}
}
}
}
这是行动
[AppendModalWindow]
public ActionResult Login(string userName, string password, bool rememberMe, string returnUrl)
{
if(somecondition)
{
redirect(dynamic_Url);
}
}
答案 0 :(得分:0)
您的控制器中只应有一个操作,它接收请求,并在其上定义属性。然后,您应该在控制器操作中使用if语句来实现条件逻辑。如果逻辑很广泛,您可以为每个方案创建一个单独的服务类。
答案 1 :(得分:0)
如果您无法提前确定重定向网址的位置,则可以在web.config中添加该设置,并让您的网络应用的负责用户/管理员输入。
<appSettings>
<add key="Redirect" value="http://path/path/path"/>
</appSettings>
并在登录操作中获取它。
[AppendModalWindow]
public ActionResult Login(string userName, string password, bool rememberMe, string returnUrl)
{
if(somecondition)
{
var url = ConfigurationManager.AppSettings["Redirect"];
redirect(url);
}
}