jQuery MVC 5下拉列表到会话变量

时间:2014-10-27 12:39:08

标签: jquery asp.net-mvc

我试图将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);
        }

这也失败了

任何帮助谢谢

1 个答案:

答案 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