Система сборки Node.js в Sublime Text 2

Причиной такого поведения является то, что методы HtmlHelper используют значение из ModelState (если оно существует), чтобы установить атрибут value, а не фактическое значение модели. Причина этого поведения объясняется в ответе на TextBoxFor для отображения начального значения, а не значения, обновленного из кода .

В вашем случае, когда вы отправляете, добавляются следующие значения to ModelState

Cars[1].Make: Land Rover 2
Cars[2].Make: Audi 3
Cars[3].Make: Honda 4

Обратите внимание, что для Cars[0].Make нет значения, поскольку вы удалили первый элемент в представлении.

Когда вы возвращаете представление, теперь коллекция содержит

Cars[0].Make: Land Rover 2
Cars[1].Make: Audi 3
Cars[2].Make: Honda 4

Итак, в первой итерации цикла метод TextBoxFor() проверяет ModelState на соответствие, не находит его и генерирует value="Land Rover 2" (т. е. значение модели) и ваш ручной ввод также считывает значение модели и устанавливает value="Land Rover 2"

. На второй итерации TextBoxFor() находит соответствие для Cars[1]Make в ModelState, поэтому устанавливает value="Land Rover 2" и ручные входы читает значение модели и устанавливает value="Audi 3".

Я предполагаю, что этот вопрос - это просто объяснение поведения (на самом деле вы сохранили бы данные и затем перенаправили бы на метод GET, чтобы отобразить новый список ), но вы можете сгенерировать правильный вывод, когда вы вернете представление, вызвав [f1 8], который очистит все значения ModelState, чтобы TextBoxFor() генерировал атрибут value на основе значения модели.

Сторона примечания: вы видите много плохой практики, включая загрязнение вашего разметка с поведением (используйте Unobtrusive JavaScript ), создавая элемент метки, который не ведет себя как ярлыки (нажатие на них не будет устанавливать фокус на соответствующий элемент управления), ненужное использование элементов
(используйте css для стиль ваших элементов с полями и т. д.) и ненужное использование new { @id = "car-make-" + i }. Код в вашем цикле может быть

@for (int i = 0; i < Model.Cars.Count; i++)
{
    

@Html.LabelFor(m => m.Cars[i].Make, "Make (@i)") @Html.TextBoxFor(m => m.Cars[i].Make, new { @class = "form-control" }) ....
} $('.delete').click(function() { $(this).closest('.form-group').remove(); }

29
задан lambdarookie 20 January 2013 в 18:05
поделиться

12 ответов

{
    "cmd": ["node","$file"]
}

отлично работает для меня в окнах и показывает вывод в возвышенном окне. Хотя я не знаю, как остановить сервер после возвышенного, мне нужно искать и убивать процесс узла.

Кроме того, проверьте узел в вашем PATH;)

Надеюсь, он работает для вас.

45
ответ дан garcianavalon 20 January 2013 в 18:05
поделиться

В Linux я использую это, просто убедитесь, что вы находитесь в вашем основном файле

{
    "shell_cmd": "pkill node ; node $file"
}
-1
ответ дан Raphael Quivel 20 January 2013 в 18:05
поделиться

Может быть, это зависит от переменных среды - попробуйте использовать полный путь к узлу, а не просто «nodejs». У меня это работало в Mac OS (например, / usr / local / node вместо просто node)

0
ответ дан kossoy 20 January 2013 в 18:05
поделиться

Это работает для меня в Windows7

1) Откройте Sublime Text, выберите «Инструменты» -> «Система сборки» -> «Новая система сборки»

2) Вставьте этот текст

{

"cmd": ["C:\\Program Files (x86)\\nodejs\\node","$file"]

}

\\ Выходящий символ

3) Сохранить как Node.sublime-build

4) Напишите новый файл js и нажмите CTRL + B для сборки.

Нажмите здесь , чтобы увидеть пример изображения.

2
ответ дан Darth Pabor 20 January 2013 в 18:05
поделиться

В Windows работает следующая конфигурация:

{
    "cmd": ["C:\\Program Files\\nodejs\\node.exe", "$file"],
    "selector": "source.js"
}
0
ответ дан approxiblue 20 January 2013 в 18:05
поделиться

Пользователи Mac, введите which node в терминале. Он выводит путь к исполняемому файлу узла, который в большинстве случаев равен /usr/local/bin/node. Теперь создайте новую систему сборки (Tools > Build System > New Build System) со следующими настройками в Sublime Text.

{   
  "cmd": ["/usr/local/bin/node", "$file"],   
  "selector": "source.js"   
}
43
ответ дан oozzal 20 January 2013 в 18:05
поделиться

Метод № 2 по ссылке ниже решен для меня:

http://www.wikihow.com/Create-a-Javascript-Console-in-Sublime-Text

3
ответ дан rsc 20 January 2013 в 18:05
поделиться

Вот совет для Windows,

Большинство ответов из этой темы правильные, но ни один из них не завершен, и, по крайней мере, ни один ответ не говорит о том, как убить существующий процесс Node, даже если вы можете запустить узел в возвышенном. Таким образом, в конечном итоге, если любой из вышеперечисленных подходов сработал для вас, вы в конечном итоге убьете Node вручную.

Вот что я сделал для «Windows»:

  1. Откройте Sublime Text, перейдите в «Инструменты» -> «Система сборки» -> «Новая система сборки»
  2. Выше откроется новый файл, вставьте туда содержимое ниже и сохраните его как nodejs.xxx (используйте расширение по умолчанию): {"cmd": ["c: /test.bat", "$ file"]}
  3. Создайте файл (c: /test.bat) и вставьте туда его содержимое (обе из двух строк):

taskkill / F / IM "node.exe" "c: / Program Files /nodejs/node.exe "% 1

  1. Сохраните его, переключитесь на Sublime Text и выберите« Инструменты »->« Build System »->« nodejs »
  2. , откройте любой Nodejs Execuable файл и нажмите CTRL + B.
  3. Ты в порядке. :)

Наслаждайтесь кодированием.

4
ответ дан Soman Dubey 20 January 2013 в 18:05
поделиться

Обычно

"cmd":["node",$file]

будет работать. Однако нет способа остановить сервер, чем. Я нашел лучшее решение, которое открывает сервер в новой консоли и закрывает его автоматически. Я также хорошо работаю с супервизорами или инспекторами узлов

"cmd" : ["start", "cmd.exe", "/C", "node", "$file"]

Надеюсь, это поможет

1
ответ дан Krzysztof Wende 20 January 2013 в 18:05
поделиться

Я могу видеть вывод консоли только в том случае, если файл существует / сохранен на диске. (для анонимного файла я тоже не вижу вывод)

Надеюсь, это поможет

1
ответ дан phani 20 January 2013 в 18:05
поделиться

Если ничего не помогает, проверьте Node Supervisor ....... вам нужно только изменить код, и сервер сам перезагрузится, чтобы вы могли увидеть изменения вживую =)

0
ответ дан Dactyllo 20 January 2013 в 18:05
поделиться

Проверено на Ubuntu Linux. Используйте селектор файлов, как показано ниже:

{
  "cmd": ["node", "$file"],
  "selector": "*.js"
}
7
ответ дан Luke W 20 January 2013 в 18:05
поделиться
Другие вопросы по тегам:

Похожие вопросы: