Sto sviluppando una convalida lato client e lato server per una determinata proprietà viewModel.ValidationMessagePer insieme a AddModelError (chiave, messaggio). Qual è la chiave?
Nel file .cshtml
ho messo questo:
@Html.DropDownListFor(model => model.EntityType.ParentId, Model.ParentTypeList, "")
@Html.ValidationMessageFor(model => model.EntityType.ParentId)
Nel Controller per la validazione di business
catch (BusinessException e)
{
ModelState.AddModelError("EntityType.ParentId", Messages.CircularReference);
}
I lavori di cui sopra come previsto: se un'eccezione viene catturato, viene visualizzato il messaggio accanto al il menu a discesa.
Tuttavia, trovo che questo modo non sia molto elegante. Nel cshtml
, utilizzo un metodo per generare tutte le informazioni necessarie sulla convalida. Nel controller, devo conoscere la stringa Key esatta e usarla.
Non c'è un modo migliore per farlo?
Questo link fornisce qualche ulteriore intuizione e un modo per non fare riferimento alla chiave direttamente come stringa ma come espressione: http://stackoverflow.com/questions/11090445/how-to-get-a-modelstate-key-of-an-item-in- a-list ecco un'altra risorsa ce che fornisce un metodo wrapper per la chiave Expression http://stackoverflow.com/questions/8793799/get-reference-to-object-from-c-sharp-expression – bUKaneer