Модель отливки в виде бритвы asp внутри строки javascript - PullRequest
1 голос
/ 22 июля 2011

Мой взгляд генерирует некоторый JS-код.Мне нужно привести мою Модель к типу интерфейса, чтобы получить некоторые свойства.

Вот пример:

<script type="text/javascript" language="javascript">
var js_array = [];
@for (var i = 0; i < ( Model as MyProject.Models.IMyInterface ).PropertyList.Count; i++) {
    <text>
        js_array['@( Model as MyProject.Models.IMyInterface ).PropertyList[i].id'] = {};
    </text>
}
</script>

Я получил:

<script type="text/javascript" language="javascript">
var js_array = [];
js_array['MyProject.Models.MyModelType.PropertyList[i].id'] = {};
js_array['MyProject.Models.MyModelType.PropertyList[i].id'] = {};
js_array['MyProject.Models.MyModelType.PropertyList[i].id'] = {};
js_array['MyProject.Models.MyModelType.PropertyList[i].id'] = {};
js_array['MyProject.Models.MyModelType.PropertyList[i].id'] = {};
js_array['MyProject.Models.MyModelType.PropertyList[i].id'] = {};
js_array['MyProject.Models.MyModelType.PropertyList[i].id'] = {};
js_array['MyProject.Models.MyModelType.PropertyList[i].id'] = {};
</script>

Но мне нужно:

<script type="text/javascript" language="javascript">
var js_array = [];
js_array['1'] = {};
js_array['2'] = {};
js_array['3'] = {};
js_array['4'] = {};
js_array['5'] = {};
js_array['6'] = {};
js_array['7'] = {};
js_array['8'] = {};
</script>

Как вы видите этот тип дисплея вместо значения ...

Можете ли вы сказать мне, почему и как я могу это исправить?

1 Ответ

4 голосов
/ 22 июля 2011

Кажется, вам не хватает пары скобок.

@for (var i = 0; i < ( Model as MyProject.Models.IMyInterface ).PropertyList.Count; i++) {
    <text>
        js_array['@( (Model as MyProject.Models.IMyInterface).PropertyList[i].id )'] = {};
    </text>
}

Я бы сделал его немного более читабельным, например:

@foreach ( var property in ((MyProject.Models.IMyInterface)Model).PropertyList ) {
    <text>
        js_array['@(property.id )'] = {};
    </text>
}

И если ваша модель реализует интерфейс, то вам даже не нужно приведение, делая это:

@foreach ( var property in Model.PropertyList ) {
    <text>
        js_array['@(property.id)'] = {};
    </text>
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...