Проверка MVC FoolProof, показывающая исключение при вызове метода SaveChange

Этот вопрос может показаться дублирующим, но я не удовлетворен ни одним из ответов, поскольку некоторые предлагают MVC Foolproof validaiton для условной проверки, а некоторые говорят, что он не работает с инфраструктурой сущностей.

Я использую MVC Foolproof RequiredIf validation в своем проекте. Он хорошо работает на стороне клиента, а проверка работает и на стороне сервера.

 [RequiredIf("STCompulsory",Operator.EqualTo,true,ErrorMessage="Please enter Registration No")]
    public string STRegNo { get; set; }

Но когда я вызываю db.Savechanges() для вставки данных, возникает исключение

An unexpected exception was thrown during validation of 'STRegNo' when invoking 
Foolproof.RequiredIfAttribute.IsValid. See the inner exception for details.

Внутреннее исключение

The method or operation is not implemented.

person ksg    schedule 19.10.2015    source источник
comment
Применяется ли это к модели представления или к вашей фактической модели данных?   -  person    schedule 19.10.2015
comment
Спасибо за ответ. Это относится к реальной модели данных.   -  person ksg    schedule 19.10.2015
comment
Не хорошая идея. И да, есть некоторые проблемы с использованием надежных проверок и EF, поэтому лучше всего использовать модель представления. Кроме того, это действительно должно быть только [RequiredIf("STCompulsory", true, ErrorMessage = "..")]   -  person    schedule 19.10.2015
comment
Спасибо, приятель. Ты снова спас меня. Если ты опубликуешь ответ, я приму его, чтобы он помог другим, имеющим подобную проблему.   -  person ksg    schedule 19.10.2015
comment
@StephenMuecke: если возможно, изучите этот вопрос   -  person ksg    schedule 27.10.2015
comment
Вы хотели, чтобы проверка на стороне клиента для этого?   -  person    schedule 27.10.2015
comment
Да .. проверка как на стороне клиента, так и на стороне сервера ..   -  person ksg    schedule 27.10.2015


Ответы (1)


Вам не нужен параметр Operator.EqualTo, и его можно просто

[RequiredIf("STCompulsory", true, ErrorMessage="Please enter Registration No")
public string STRegNo { get; set; }

Вы правы в том, что у надежного атрибута [RequiredIf] есть некоторые проблемы с EF, и он подробно обсуждается в этой рабочей проблеме. (вместе с некоторыми предлагаемыми изменениями).

Самое простое решение — использовать в представлении модель представления, а не модель данных, и применить атрибут к свойству модели представления.

person Community    schedule 19.10.2015