Объединение строк C # в JavaScript / функции нокаута / наблюдаемые

#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>
  

Я вижу здесь некоторые проблемы

  1. Я получаю System.NullReferenceException for @temp , но я устанавливаю его в пустую строку, удаление @Html.Raw удалит исключение, после удаления @Html.Raw -> @temp не записывается в конечный html-файл
  2. Я пытаюсь объединить наблюдаемое @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(...) , который может объединить эту строку так, чтобы она выглядела как обычная переменная?