На моей странице есть Ajax.BeginForm, который в случае успеха должен запустить функцию javascript. Я делал это раньше, и это работало нормально.
Однако в сегодняшнем случае я хочу передать в свою функцию javascript некоторые переменные, которые я получаю из моей ViewModel:
Мой частичный вид:
@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 («это работает»). Все после этого просто игнорируется.
Я пытался использовать переменную 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);
});
}
Я получил бы ошибку в консоли firebug:
syntax error
if ( == "")
Он полностью игнорировал @Model.Language
Я также пытался передать его с помощью (), например: @(hasLang)
или @(@Model.Language)
, но безуспешно.
Как я могу передать свой @Model.Language
на мой jquery?
Спасибо