Почему этот JQuery недействителен? - PullRequest
1 голос
/ 25 июня 2010

Я пытался выяснить, почему это недопустимо (согласно VS2008).

//Global variable
var sortFields;

$(document).ready(function() {
    sortFields = <%= CustomHtmlHelper.ToJson(ViewData["SortInfo"])%>;
    //Other Code here...
});

Мой код HtmlHelper

    public static string ToJson(object obj)
    {
        var serializer = new JavaScriptSerializer();
        var json = serializer.Serialize(obj);

        return json;
    }

Помощник генерирует действительный Json (подтвердил это), но когда я пытаюсь добавить что-либо еще в функцию, VS2008 жалуется на все виды вещей, не может правильно выровнять код и т. Д. При закрытии скобок и как только я это прокомментирую, это сработает. Тем не менее, код работает нормально, даже если VS2008 жалуется на это. Это просто VS2008, который дерьмо с JQuery, или я действительно делаю что-то не так?

Ответы [ 2 ]

3 голосов
/ 25 июня 2010

Конструктор , как правило, собирается немного расстроиться, когда <%= находится в сценарии (и иногда это становится странным, когда он находится в значениях атрибута).Если выходные данные верны, и вы довольны тем, как построен html, я бы не стал подчеркивать.

В конечном счете, все же;откуда VS знает, что ToJson собирается вернуть что-то разумное?Он может вернуть "(((((((", что действительно испортит JavaScript.Вот почему это несчастно.

2 голосов
/ 25 июня 2010

MRW,

у вас здесь пропущена скобка:

$(document).ready(function() {
    sortFields = <%= CustomHtmlHelper.ToJson(ViewData["SortInfo"])%>;
    //Other Code here...
};

должно быть:

$(document).ready(function() {
    sortFields = '<%= CustomHtmlHelper.ToJson(ViewData["SortInfo"])%>';
    //Other Code here...
**)};**

также, может быть, лучше вернуть jsonresult? Также добавьте одинарные кавычки вокруг CustomHtmlHelper, как показано выше.

...