将数据注入每个请求

时间:2018-08-20 16:35:05

标签: c# asp.net-mvc devexpress

我遇到一种情况,我需要在javascript中生成一个ID并以某种方式将其放入母版页,以便每次请求返回到控制器时,我都可以在控制器中获取该值。无论请求是来自表单提交还是ajax调用等,我都需要使用它来工作。在控制器中,我将拥有一个带有getter的属性,该属性会以某种方式将该值从母版页中拉出。这可能吗,将如何实现?

1 个答案:

答案 0 :(得分:1)

在客户端中使用cookie,并从控制器中获取价值。

  1. 写一个基本控制器并将其扩展到您的 控制器。

  2. 在基本控制器中写入方法以读取cookie并存储变量。您可以从派生的控制器访问变量。

请参见以下示例:

  public class BaseController : Controller
    {
        private string _id = null;
        protected string ID
        {
            get
            {
                var cookie = Request.Cookies.Get("ID");
                if (cookie != null)
                {
                    _id = cookie.Value;
                }

                return _id;
            }
        }
    }

        public class HomeController : BaseController
        {
            public ActionResult Index()
            {
                var test = ID;

                ViewBag.Title = "Home Page";

                return View();
            }
        }

///在您的主页下的代码下面...

 <script>
        function setCookie(cname, cvalue, exdays) {
        var d = new Date();
        d.setTime(d.getTime() + (exdays*24*60*60*1000));
        var expires = "expires="+ d.toUTCString();
        document.cookie = cname + "=" + cvalue + ";" + expires + ";path=/";
        }
        setCookie("ID", "123456", 1);
    </script>