Как избавиться от запятой в конце этого массива Javascript, который заполняется с помощью Razor? - PullRequest
4 голосов
/ 03 января 2012

Я использую Razor для вставки элементов в массив Javascript. Он работает так, как задумано, используя код ниже. Тем не менее, это приводит к одной дополнительной запятой в конце массива. Может кто-нибудь предложить способ предотвратить это?

graphByMonth = new Array(

@foreach (var cost in Model.Cost) {
    <text>
    [@cost.CPM, '@cost.EndDate'],
    </text>
    }
);

1 Ответ

2 голосов
/ 03 января 2012

Никогда не используйте конкатенации строк при работе с JavaScript.Если вы хотите передать некоторую модель на стороне сервера в переменную javascript, вы можете JSON-сериализовать ее следующим образом, чтобы убедиться, что опасные символы должным образом экранированы:

var graphByMonth = @Json.Encode(Model.Cost.Select(cost => new {
    cpm = cost.CPM, endDate = cost.EndDate
}));

, что будет отображаться как:

var graphByMonth = [
    { cost: '1', endDate: 'date 1' },
    { cost: '2', endDate: 'date 2' },
    { cost: '3', endDate: 'date 3' }
];

Используя Json.Encode, вы гарантируете, что значения правильно закодированы, и у вас не будет никакого нарушенного синтаксиса, который вы получите, если когда-нибудь попробуете сделать это вручную, используя конкатенации строк, циклы foreach или что-то еще.

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