我在 ASP.NET MVC3 中有一个视图,它调用 AsyncController 以获取部分视图。我还想将一些数据作为 JSON 字符串设置为我可以从 jQuery 读取的 cookie。
这是我的观点:
$.ajax({
type: "POST",
url: '/ProductAsync/GetProductData',
data: JSON.stringify({
Product: thisProduct
}),
contentType: "application/json; charset=utf-8",
success: function (returndata) {
$('div#' + thisProduct).empty().html(returndata);
var productDataJson = $.cookie(thisProduct + "-ProductData");
alert(productDataJson);
}
});
这是我的 AsyncControlleraction:
public class ProductAsyncController : AsyncController
{
[HttpPost]
public ActionResult GetProductData(string Product)
{
ProductData model = ProductModel.GetProductData(Product);
Response.Cookies.Add(new HttpCookie(Product+"-ProductData", (new JavaScriptSerializer()).Serialize(model)));
return PartialView("~/Views/Product/_ProductData.cshtml", model);
}
}
我知道模型按预期返回到视图。部分的 HTML 显示得很好。但似乎cookie没有被设置:
Response.Cookies.Add(new HttpCookie(Product+"-ProductData", (new JavaScriptSerializer()).Serialize(model)));
我在浏览器的 cookie 存储位置和alert()
节目中看不到 cookie null
。我知道它JavaScriptSerializer
正在工作:我通过将字符串放入 ViewData 并将其显示在页面上进行了测试。
我在设置 cookie 方面做错了什么?