Como obtenho a coleção de erros em uma exibição?
Não quero usar o Resumo de validação do auxiliar de HTML nem a Mensagem de validação. Em vez disso, quero verificar se há erros e se algum os exibe em formato específico. Também nos controles de entrada, desejo verificar um erro de propriedade específico e adicionar uma classe à entrada.
PS: Estou usando o Spark View Engine, mas a ideia deve ser a mesma.
Então achei que poderia fazer algo como ...
<if condition="${ModelState.Errors.Count > 0}">
DispalyErrorSummary()
</if>
....and also...
<input type="text" value="${Model.Name}"
class="?{ModelState.Errors["Name"] != string.empty} error" />
....
Ou algo assim.
ATUALIZAR
Minha solução final ficou assim:
<input type="text" value="${ViewData.Model.Name}"
class="text error?{!ViewData.ModelState.IsValid &&
ViewData.ModelState["Name"].Errors.Count() > 0}"
id="Name" name="Name" />
Isso adiciona apenas a classe css de erro se esta propriedade tiver um erro.
html
asp.net-mvc
validation
spark-view-engine
Ryan Montgomery
fonte
fonte
Respostas:
ou
e para uma propriedade específica ...
fonte
Para obter apenas os erros do ModelState, use este Linq:
fonte
Versão condensada da resposta de @ ChrisMcKenzie :
fonte
Isso fornecerá uma sequência com todos os erros com vírgula separando
fonte
Obrigado Chad! Para mostrar todos os erros associados à chave, eis o que eu criei. Por algum motivo, o auxiliar Html.ValidationMessage base mostra apenas o primeiro erro associado à chave.
HtmlHelper:
fonte
Reunindo várias respostas acima, é isso que acabei usando:
validationErrors
acaba sendo umList<string>
que contém cada mensagem de erro. A partir daí, é fácil fazer o que quiser com essa lista.fonte
Aqui está o VB.
fonte
Se você não souber qual propriedade causou o erro, é possível, usando a reflexão, fazer um loop sobre todas as propriedades:
Onde T é o tipo do seu "ViewModel".
fonte