我试图将Session var设置为下拉列表的值,如果它是值的文本,我不会被融合,
$(document).ready(function () {
$("#slid").on("change", function () {
var selectedLang = document.getElementById("slid");
var selectedItem = selectedLang.options[selectedLang.selectedIndex].text;
var myvar = selectedItem.text;
'@{Session["temp"] = "' + myvar + '"; }';
alert('@{Session["temp"] = "' + myvar + '"; }');
alert(this.value);
})
我的警报(this.value)有效,但我试图将其设置为Session var并且我什么也没得到
如果我说
var text = this.textContent;
alert(text);
这不只返回一个
更新
好的,因为$ .post不工作
我试图只使用ajax回发
$.ajax({
url: "@Url.Action("UpdateLang")",
type: "POST",
data: { model: JSON.stringify(myVar) },
contentType: "application/json; charset=utf-8",
dataType: "json",
error: function (response) {
alert("somthing"); // response.responseText
},
success: function (response) {
alert(response);
}
这也失败了
任何帮助谢谢
答案 0 :(得分:3)
你不能这样做。您需要将客户端变量发送回服务器。您可以使用AJAX执行此操作:
<强>使用Javascript:强>
$(document).ready(function () {
$("#slid").on("change", function () {
// This is the jQuery way of finding selected option's text
var myVar = $(this).find("option:selected").text();
// Post the value to your server. You should do some error handling here
$.post("/MyController/SetSession", {
myVariable: myVar
});
});
});
<强> MyController.cs 强>
[HttpPost]
public ActionResult SetSession(string myVariable) {
// Set to Session here.
Session["temp"] = myVariable;
return new HttpStatusCodeResult(HttpStatusCode.OK);
}
注意:会话并非真正用于存储短期信息。也许你可以使用TempData?