我想将java scrip var保存到asp.net mvc Temp-data中,但它给出语法错误
$(".PopReviewNo").click(function () {
if (($('textarea').val().length == 0)) {
$('.comm').addClass("layout");
}
else {
$(".comm").removeClass("layout");
var comment = $("#comme").val();
**@TempData["CommentForPop"]= $("#comme").val();** ///Check this one
$.fancybox({
'transitionIn': 'elastic',
'transitionOut': 'elastic',
'easingIn': 'easeOutBack',
'easingOut': 'easeInBack',
'width': 850,
'height': 394,
href: "/Stores/PopReview/@Model.Company.id?comment=" + comment,
'type': 'iframe'
});
}
});
最佳答案
您可以作为替代方法,将数据发送到端点进行保存:
$(".PopReviewNo").click(function () {
if (($('textarea').val().length == 0)) {
$('.comm').addClass("layout");
}
else {
$(".comm").removeClass("layout");
var comment = $("#comme").val();
var myVariableToSave = $("#comme").val();
//Send the variable to be saved
$.getJSON('@Url.Action("myendpoint")', { dataToSave: myVariableToSave}, function(data) {
//show a message if you want
});
$.fancybox({
'transitionIn': 'elastic',
'transitionOut': 'elastic',
'easingIn': 'easeOutBack',
'easingOut': 'easeInBack',
'width': 850,
'height': 394,
href: "/Stores/PopReview/@Model.Company.id?comment=" + comment,
'type': 'iframe'
});
}
});
切记TempData是用于请求之间的持久性的,因此将在请求结束时清除。因此,寻找其他存储空间以保存您的变量。
public ActionResult MyEndPoint(string dataToSave)
{
if(string.IsNullOrEmpty(dataToSave))
{
return Json(new { message = "Empty data to save"}, JsonRequestBehaviour.AllowGet);
}
//Save it to session or some other persistent medium
Session["dataToSave"] = dataToSave;
return Json(new { message = "Saved"}, JsonRequestBehaviour.AllowGet);
}
您也可以执行ajax发布而不是获取并检查表单 token 以提高安全性,例如建议的here。