将数据从ViewModel传递到javascript

|| 我的页面上有一个Ajax.BeginForm,成功后应运行javascript函数。我之前已经做过,而且效果很好。 但是,在今天的情况下,我想将我从ViewModel中获得的一些变量传递给我的javascript函数: 我的部分观点:
@model MyProject.ViewModels.CategoryViewModel

@{
    var hasLang = Model.Language != \"\" ? Model.Language : \"-1\";
}


<script type=\"text/javascript\">

function UpdateCategoryProgress() {
    console.log(\"this works\");
    console.log(@hasLang);
    console.log(\"this doesn\'t works\");
    if (@hasLang == \"-1\") {
        $.post(\'@Url.Action(\"CategoryProgress\", \"Home\")\', { categoryid: @(Model.Category.Id) }, function (data) {
            populateDiv($(\"#CategoryProgressWrapper\"), data);
        });
    }
    else {
        $.post(\'@Url.Action(\"CategoryProgress\", \"Home\")\', { categoryid: @(Model.Category.Id), lang: @(hasLang) }, function (data) 
            populateDiv($(\"#CategoryProgressWrapper\"), data);
        });
    }
}
</script>

<div id=\"editingContainer\">
@using (Ajax.BeginForm(\"Edit\", new AjaxOptions { UpdateTargetId = \"featuresDiv\", OnSuccess = \"UpdateCategoryProgress\" }))
{
 (code here)
)
现在到有趣的部分,代码可以正常运行。该函数成功运行,但是控制台中仅显示第一个console.log(\“ this works \”)。此后的所有内容都将被忽略。 我尝试使用hasLang变量是因为在运行以下命令时:
if (@Model.Language == \"\") {
    $.post(\'@Url.Action(\"CategoryProgress\", \"Home\")\', { categoryid: @(Model.Category.Id) }, function (data) {
        populateDiv($(\"#CategoryProgressWrapper\"), data);
    });
}
else {
    $.post(\'@Url.Action(\"CategoryProgress\", \"Home\")\', { categoryid: @(Model.Category.Id), lang: @Model.Language }, function (data) {
        populateDiv($(\"#CategoryProgressWrapper\"), data);
    });
}
我会在萤火虫控制台中收到错误消息:
syntax error
if ( == \"\")
它完全忽略了“ 3” 我也尝试用()传递它,例如:
@(hasLang)
@(@Model.Language)
,但没有成功。 如何将我的
@Model.Language
传递给我的jquery? 谢谢     
已邀请:
您需要在双引号中加上“ 7”来创建Javascript字符串文字。 您还应该致电
Server.JavaScriptStringEncode
。     

要回复问题请先登录注册