如何解决将数据从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\",{ 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\",function (data) {
populateDiv($(\"#CategoryProgressWrapper\"),data);
});
}
else {
$.post(\'@Url.Action(\"CategoryProgress\",lang: @Model.Language },data);
});
}
我会在萤火虫控制台中收到错误消息:
syntax error
if ( == \"\")
它完全忽略了“ 3”
我也尝试用()传递它,例如:@(hasLang)
或@(@Model.Language)
,但没有成功。
如何将我的@Model.Language
传递给我的jquery?
谢谢
解决方法
您需要在双引号中加上“ 7”来创建Javascript字符串文字。
您还应该致电
Server.JavaScriptStringEncode
。
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。