validationmessagefor que net mvc isvalid how example errors error ejemplo asp c# .net asp.net-mvc

c# - que - ¿Cuál es el punto del parámetro clave en ModelState.AddModelError en ASP.NET MVC?



validationsummary asp.net ejemplo (3)

He agregado comprobaciones de validación en mi controlador que modifican el ModelState si la validación falla.

Por ejemplo:

private bool ValidateMoney(string raw, string name, decimal min, decimal max) { try { var dec = Convert.ToDecimal(raw); if (dec < min) { throw new ArgumentOutOfRangeException(name + " must be >= " + min); } else if (dec > max) { throw new ArgumentOutOfRangeException(name + " must be <= " + max); } } catch (Exception ex) { ModelState.AddModelError(name, ex.GetUserMessage()); } return ModelState.IsValid; }

Sin embargo, nunca sé el valor para pasar el parámetro key en ModelState.AddModelError . (En el ejemplo, acabo de configurarlo con el nombre para mostrar de mi interfaz de usuario).

¿Para qué es el parámetro y cómo debo usarlo?


El parámetro key se puede usar para asociar el error de validación con un campo de formulario, y así controlar dónde aparece el mensaje en la pantalla. Se puede usar con entradas de tipo HtmlHelper y con entradas HTML simples.

Si ha usado @Html.TextBoxFor (o similar) y un @Html.ValidationMessageFor , puede obtener el valor de la clave del name HTML del campo que se está validando (use Inspeccionar elemento).

Si acaba de usar un <input> HTML, puede agregar un marcador de posición de validación usando @Html.ValidationMessage("AKeyIMadeUp") , y obtener un mensaje para que aparezca en este: ModelState.AddModelError("AKeyIMadeUp", "The value you entered is no good"); .


En realidad, puede configurar cualquier mensaje de validación mientras el envío de su formulario no tiene éxito, supongamos que crea un campo en el modelo

[Required] [DataType(DataType.Password)] [Display(Name = "Current password")] public string OldPassword { get; set; }

y mientras su modelState se ha invalidado, puede establecer un enlace de mensaje de error con ese campo como.

ModelState.AddModelError("OldPassword", "Current Password do not match ");

entonces su mensaje de error se enlazará con el campo en el modelo llamado "OldPassword"


ValidationMessage HTML Helper utiliza la clave para conocer el mensaje de error exacto que se muestra.

Ejemplo:

<%=Html.TextBox("Name") %> <br /> <%=Html.ValidationMessage("Name") %>

El ayudante de ValidationMessage mostrará el mensaje que tiene la clave "Nombre" en el diccionario ModelState.