Похоже, переменная toggle
, которую вы пытаетесь использовать, нигде не определена в вашем представлении.
В действиях контроллера ASP.NET MVC обычно передаются модели представлений представлениям.Эти модели представления содержат свойства, которые будут использоваться представлением.Как и всегда в приложении ASP.NET MVC, вы начинаете с определения модели представления:
public class MyViewModel
{
public bool IsToggle { get; set; }
}
, затем пишете действие контроллера, которое создает экземпляр этой модели представления и передает его представлению:
public ActionResult Index()
{
var model = new MyViewModel
{
IsToggle = true
};
return View(model);
}
и, наконец, вы пишете строго типизированное представление для этой модели представления, где вы можете использовать его свойства:
<%@ Page
Language="C#"
MasterPageFile="~/Views/Shared/Site.Master"
Inherits="System.Web.Mvc.ViewPage<AppName.Models.MyViewModel>" %>
<asp:Content ID="Content2" ContentPlaceHolderID="MainContent" runat="server">
<script type="text/javascript">
(function () {
debugger;
var $a = 10;
var $b = <%= Model.IsToggle %>;
var $c = 12;
});
</script>
</asp:Content>
Теперь давайте предположим, что ваша модель представления содержит некоторые свойства типа string или даже другого типа.сложные объекты.В этом случае вам нужно будет правильно их кодировать.И лучший способ убедиться, что вы правильно кодируете значения, передаваемые в javascript, - это использовать литералы javascript (запись JSON):
<script type="text/javascript">
(function () {
debugger;
// we JSON serialize the entire model:
var model = <%= new JavaScriptSerializer().Serialize(Model) %>;
// Now you can manipulate individual model properties:
alert(model.SomeProperty);
});
</script>
Обратите внимание, что класс JavaScriptSerializer определенв сборке System.Web.Extensions
в пространстве имен System.Web.Script.Serialization
, поэтому убедитесь, что они включены в область.