У меня возникла проблема в форме, которую я пытаюсь опубликовать. В сценарии, где форма не проверяется, я беру стандартный маршрут вызова ModelState.AddModelError()
, а затем возвращаю результат просмотра.
Дело в том, что помощники HTML. * Должны извлекать опубликованное значение при рендеринге, и я замечаю, что мои текстовые поля ТОЛЬКО делают это, если я включаю их в список параметров действия обратной передачи, который не должен не требуется, поскольку в некоторых формах слишком много полей, чтобы перечислить их все в качестве параметров.
Мой код действия примерно:
[AcceptVerbs(HttpVerbs.Post)]
public ActionResult EditDataDefinition(long? id, string name)
{
var dataDefinition = ...
// do some validation stuff
if (!ModelState.IsValid)
{
// manually set checkbox fields via ViewData seeing as this STILL doesn't work in MC 1.0 :P
// ...
return View(dataDefinition);
}
}
Теперь dataDefinition (который является сущностью LINQ to SQL) имеет поле MinVolume , которое обрабатывается в представлении этой строкой:
Minimum: <%= Html.TextBox("MinVolume", null, new { size = 5 })%>
Тем не менее, когда представление отображается после неудачной проверки ModelState, значение, введенное в него на исходной странице, которую мы разместили, не сохраняется, ЕСЛИ Я не включил его в качестве параметра в метод обратной передачи. Буквально я могу «решить проблему», выполнив это:
[AcceptVerbs(HttpVerbs.Post)]
public ActionResult EditDataDefinition(long? id, string name, string minVolume)
По какой-то причине это заставит значение поля быть сохраненным. Это кажется мне глупым, потому что моя форма имеет гораздо больше значений, чем просто это, и мне не нужно было добавлять параметр только для этого поля.
Есть идеи?