#c# #jquery #asp.net-mvc #razor #knockout.js
#c# #jquery #asp.net-mvc #razor #knockout.js
Вопрос:
Я пытаюсь сделать что-то вроде этого:
string temp = "";
<script type="text/javascript">
if (@min >= @customDataBindArray '().length') {
for ( i = 0; i < @columns.Count; i )
{
@temp ="<td>amp;nbsp;</td>";
}
for (i = 0; i < @min - @customDataBindArray '().length'); i )
{
$('.List tr:last').after(@Html.Raw("<tr>" @temp "</tr>"));
}
}
</script>
Я вижу здесь некоторые проблемы
- Я получаю
System.NullReferenceException
for@temp
, но я устанавливаю его в пустую строку, удаление@Html.Raw
удалит исключение, после удаления@Html.Raw
->@temp
не записывается в конечный html-файл - Я пытаюсь объединить наблюдаемое
@customDataBindArray '().length
, это приведет кMyObservable '().length'
Может быть, вы можете протянуть мне руку помощи?
Комментарии:
1. Ваш запутанный код на стороне клиента и на стороне сервера. Не делайте этого.
2. Я бы посоветовал не использовать C # / Razor для генерации JavaScript. Вместо этого отправьте свои данные на страницу с помощью ajax и сгенерируйте наблюдаемые из этих данных.
3. вы не можете назначить данные обратно объекту ViewModel из JavaScript
Ответ №1:
вы не можете назначить данные обратно объекту ViewModel из JavaScript
<script type="text/javascript">
var temp = '';
if (@min >= @customDataBindArray '().length') {
for ( i = 0; i < @columns.Count; i )
{
temp ="<td>amp;nbsp;</td>";
}
for (i = 0; i < @min - @customDataBindArray '().length'); i )
{
$('.List tr:last').after("<tr>" temp "</tr>");
}
}
</script>
это может сработать
Комментарии:
1. Использование
@customDataBindArray '().length'
приведет кMyObservable '().length'
2. лучше всего это сделать, чтобы сохранить значения в скрытых тегах @html и использовать dosumentread и прочитать его из jquery и использовать значения в функции. в противном случае это будет очень грязное и плохое программирование
3. Может быть, есть такой метод
@Html.Raw(...)
, который может объединить эту строку так, чтобы она выглядела как обычная переменная?