Jquery 将数据从ViewModel传递到javascript
我的页面上有一个Ajax.BeginForm,如果成功,它应该运行一个javascript函数。我以前做过,效果很好。 但是,在今天的例子中,我希望将从ViewModel中获得的一些变量传递到javascript函数中: 我的部分观点是:Jquery 将数据从ViewModel传递到javascript,jquery,asp.net-mvc,asp.net-mvc-3,razor,viewmodel,Jquery,Asp.net Mvc,Asp.net Mvc 3,Razor,Viewmodel,我的页面上有一个Ajax.BeginForm,如果成功,它应该运行一个javascript函数。我以前做过,效果很好。 但是,在今天的例子中,我希望将从ViewModel中获得的一些变量传递到javascript函数中: 我的部分观点是: @model MyProject.ViewModels.CategoryViewModel @{ var hasLang = Model.Language != "" ? Model.Language : "-1"; } <script t
@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)
)
我会在firebug控制台中得到错误:
syntax error
if ( == "")
它完全忽略了@Model.Language
我还尝试使用()传递它,比如:@(hasLang)
或@(@Model.Language)
,但没有成功
如何将@Model.Language
传递给jquery
谢谢您需要将
Model.Language
放在双引号中以创建Javascript字符串文本
您还应该调用
Server.JavaScriptStringEncode
Geez。。。我甚至在我的另一页上也这么做了。。。我怎么可能没有注意到这一点。谢谢但是,为什么要调用@Server.JavaScriptStringEncode for?@Lan:如果字符串有一个“
或换行符。否则,您将有一个XSS孔。
syntax error
if ( == "")