检索ActionExecutingContext的实例 [英] Retrieve Instance of ActionExecutingContext

查看:180
本文介绍了检索ActionExecutingContext的实例的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我想找回里面ActionExecutingContext实例


  

公众的ActionResult Contact2(字符串之一,字符串二)


和不在类albumAttribute。

是否有可能呢?

谢谢!

  [HttpPost]
        [相册]
        公众的ActionResult Contact2(字符串之一,字符串二)
        {
            ViewBag.Message =您的联系页面。            VAR SS = Response.Status;            VAR流派=新的List<&体裁GT;
            {
                新的流派名称{=迪斯科},
                新的流派名称{=爵士},
                新的流派名称{=岩石}
            };
            //返回查看(流派);
            //返回视图(contact2,体裁);            返回视图(contact22,体裁);
        }    公共类albumAttribute:ActionFilterAttribute
    {
        公共覆盖无效OnActionExecuting(ActionExecutingContext filterContext)
        {            HTT prequestBase REQ = filterContext.HttpContext.Request;
            HTT presponseBase解析度= filterContext.HttpContext.Response;             UriBuilder uriBuilder =新UriBuilder(HTTP://+ req.Url.Authority + req.Url.LocalPath);
             NameValueCollection中查询= HttpUtility.ParseQueryString(uriBuilder.Query);
             query.Add(专辑,第一);
             uriBuilder.Query = query.ToString();             字符串的URL = req.Url.AbsolutePath.ToString();
             res.Redirect(uriBuilder.Uri.OriginalString);             base.OnActionExecuting(filterContext);             / *
                UriBuilder uriBuilder =新UriBuilder(HTTP://+ req.Url.Authority +/首页/);
                res.Redirect(uriBuilder.Uri.OriginalString);                base.OnActionExecuting(filterContext);
            * /        }
}


解决方案

根据您的意见:

动作过滤器之前,操作执行这样的动作里面你将无法使用 base.OnActionExecuting(filterContext)

除此之外,所有的附加图像中的code可能没有 ActionExecutingContext 对象来执行,只是把它添加到您的行动,并为获得一个请求和响应对象使用响应请求控制器属性。
您还可以使用

 返回this.Redirect(yourUrl);

而不是 res.Redirect的(...)

  [HttpPost]
    [相册]
    公众的ActionResult Contact2(字符串之一,字符串二)
    {
        VAR REQ = this.Request;
        VAR解析度= this.Response;        UriBuilder uriBuilder =新UriBuilder(HTTP://+ req.Url.Authority + req.Url.LocalPath);
        NameValueCollection中查询= HttpUtility.ParseQueryString(uriBuilder.Query);
        query.Add(专辑,第一);
        uriBuilder.Query = query.ToString();        字符串的URL = req.Url.AbsolutePath.ToString();
        返回this.Redirect(uriBuilder.Uri.OriginalString);
    }

I would like to retrieve the instance of ActionExecutingContext inside of

public ActionResult Contact2(string one, string two)

and not in the class albumAttribute.

Is it possible to do it?

Thanks!

        [HttpPost]
        [album]
        public ActionResult Contact2(string one, string two)
        {
            ViewBag.Message = "Your contact page.";

            var ss = Response.Status;

            var genres = new List<Genre>
            {
                new Genre { Name = "Disco"},
                new Genre { Name = "Jazz"},
                new Genre { Name = "Rock"}
            };
            //return View(genres);


            //return View("contact2", genres);

            return View("contact22", genres);
        }





    public class albumAttribute : ActionFilterAttribute
    {
        public override void OnActionExecuting(ActionExecutingContext filterContext)
        {

            HttpRequestBase req = filterContext.HttpContext.Request;
            HttpResponseBase res = filterContext.HttpContext.Response;

             UriBuilder uriBuilder = new UriBuilder("http://" + req.Url.Authority + req.Url.LocalPath);
             NameValueCollection query = HttpUtility.ParseQueryString(uriBuilder.Query);
             query.Add("album", "first");
             uriBuilder.Query = query.ToString();

             string url = req.Url.AbsolutePath.ToString();
             res.Redirect(uriBuilder.Uri.OriginalString);

             base.OnActionExecuting(filterContext);

             /*
                UriBuilder uriBuilder = new UriBuilder("http://" + req.Url.Authority + "/Home/About");
                res.Redirect(uriBuilder.Uri.OriginalString);

                base.OnActionExecuting(filterContext);
            */     

        }
}

解决方案

Based on your comments:

Action filters execute prior to Actions so inside an Action you won't be able to use base.OnActionExecuting(filterContext).

Other than that all the code that's attached in the image could be executed without ActionExecutingContext object, just add it to your Action and for getting a Request and Response objects use Response and Request controller properties. You can also use

return this.Redirect(yourUrl);

instead of res.Redirect(...)

    [HttpPost]
    [album]
    public ActionResult Contact2(string one, string two)
    {
        var req = this.Request;
        var res = this.Response;

        UriBuilder uriBuilder = new UriBuilder("http://" + req.Url.Authority + req.Url.LocalPath);
        NameValueCollection query = HttpUtility.ParseQueryString(uriBuilder.Query);
        query.Add("album", "first");
        uriBuilder.Query = query.ToString();

        string url = req.Url.AbsolutePath.ToString();
        return this.Redirect(uriBuilder.Uri.OriginalString);            
    }

这篇关于检索ActionExecutingContext的实例的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆