Razor: @ Html.HiddenFor () необходимо отключить проверку - PullRequest
4 голосов
/ 28 июля 2011

Не могли бы вы помочь мне, пожалуйста.

У меня есть класс:

public class Product
{
   ...

   // NOT REQUIRED!
   public virtual Category Category{ get; set; }
}

Но когда в представлении я создаю

@Html.HiddenFor(model => model.Category.Id), or
@Html.Hidden("model.Category.Id", model => model.Category.Id)

Бритва добавляет к этому атрибут проверки.

  1. Как его выключить? (в модели, на виду)
  2. Как отключить событие проверки, если свойство имеет атрибут [Обязательный]?

Я обнаружил, что это не проблема бритвы, это где-то в MVC. Даже если мне удастся передать «Category.Id» value = "« на сервер, TryModelUpdate () завершится неудачей - для этого необходимо установить «Category.Id», но в моей модели это не требуется.

Почему это так ??!

Ответы [ 2 ]

0 голосов
/ 21 февраля 2019

Я решил ту же проблему с костылем, как это:

  @{ Html.EnableUnobtrusiveJavaScript(false); }

  @Html.HiddenFor(t => t.Prop1)
  @Html.HiddenFor(t => t.Prop2)

  ...

  @{ Html.EnableUnobtrusiveJavaScript(true); }

0 голосов
/ 29 июля 2011

Настройка скрытого типа:

@Html.Hidden("CategoryIdHidden", model => model.Category.Id)

И обрабатывать опубликованное скрытое значение отдельно от привязки модели ... Я думаю, что проверка зависит от пользовательского интерфейса, а не от модели, поэтому она не будет проверять идентификатор категории.

Или укажите в скрытом значении по умолчанию «0». Значение "", вероятно, не будет правильно оцениваться, если category.ID имеет тип int, следовательно, его ноль, а значит, и ошибки.

НТН.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...