将数据注入每个请求
Injecting data into every request
我有一种情况需要在 javascript 中生成一个 ID 并以某种方式将其放入母版页中,以便每次请求返回到控制器时我都可以在控制器中获取该值。无论请求是来自表单提交还是 ajax 调用等,我都需要它来工作。在控制器中,我将有一个 属性 和一个 getter 将该值从母版页中提取出来不知何故。这可能吗?如何实现?
在客户端中使用 cookie 并获取您可以从控制器获取值。
编写一个基本控制器并在您的
控制器。
在基本控制器中写入方法以读取 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>
我有一种情况需要在 javascript 中生成一个 ID 并以某种方式将其放入母版页中,以便每次请求返回到控制器时我都可以在控制器中获取该值。无论请求是来自表单提交还是 ajax 调用等,我都需要它来工作。在控制器中,我将有一个 属性 和一个 getter 将该值从母版页中提取出来不知何故。这可能吗?如何实现?
在客户端中使用 cookie 并获取您可以从控制器获取值。
编写一个基本控制器并在您的 控制器。
在基本控制器中写入方法以读取 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>