Visual Studio «Условная компиляция выключена» Ошибка в представлении при передаче объекта JSON - PullRequest
3 голосов
/ 12 мая 2011

Я передаю объект JSON в Javascript через ViewBag со следующим кодом в моем представлении:

var jsonResultData = @Html.Raw(ViewBag.JsonResultData);

Этот подход работает нормально, но VisualStudio продолжает давать мне предупреждение «Условная компиляция выключена»,Кажется, VS хочет кавычки вокруг @ Html.Raw (ViewBag.JsonResultData);Если я добавлю кавычки, jQuery увидит переменную как строку, а не как данные JSON.

Мой подход некорректен?Есть ли другой способ, которым я должен подходить к этому?Если нет, могу ли я отключить предупреждение VS?Раздражающим побочным эффектом предупреждения является то, что я не могу отформатировать свой код с помощью CTRL KD.

1 Ответ

9 голосов
/ 12 мая 2011

Почему вы используете ViewBag? Я полагаю, что в своем действии контроллера вы вручную сериализовали какую-то модель в JSON, не так ли? Примерно так:

public ActionResult Foo()
{
    var model = ...
    ViewBag.JsonResultData = new JavaScriptSerializer().Serialize(model);
    return View(model);
}

Я бы не рекомендовал вам это делать. Вместо этого сделайте это:

public ActionResult Foo()
{
    var model = ...
    return View(model);
}

и по вашему мнению:

<script type="text/javascript">
    var jsonResultData = @Html.Raw(Json.Encode(Model));
</script>

Что касается предупреждения, то, конечно, Razor Intellisense далеко не идеален. Вы действительно можете получить некоторые предупреждения, особенно когда вы смешиваете бритву с JavaScript. Мы можем только надеяться, что они исправят это в будущих версиях ASP.NET MVC. На данный момент игнорируйте эти предупреждения. Честно говоря, когда я работаю с представлением, я больше не смотрю на предупреждения или ошибки в Visual Studio, поскольку заранее знаю, что они содержат ошибки, и мое приложение прекрасно работает при запуске.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...