validations textboxfor net mvc example asp asp.net-mvc viewbag mvc-editor-templates editorformodel

asp.net-mvc - textboxfor - validation asp net mvc



El valor de ViewBag.Title reemplaza a Model.Title para la plantilla del editor MVC de ASP.NET (3)

El valor utilizado por Html.EditorFor puede provenir de tres lugares: ModelState , ModelState y Model . Por cierto, ViewBag y ViewBag son la misma cosa, dos formas de interactuar con el mismo diccionario subyacente.

Por lo tanto, para evitar conflictos al trabajar con formularios, puede usar el Modelo en su lugar o un prefijo, como ViewBag._Title .

En este caso, ViewBag.Title se utiliza para compartir datos con el diseño, también puede hacer Page.Title sin preocuparse por cambiar los datos de visualización.

Cuando configuro ViewBag.Title en la parte superior de una plantilla de Razor, el cuadro de texto de la plantilla del editor Model.Title se rellena con el valor de ViewBag.Title lugar del valor esperado de Model.Title . Llamar a Html.EditorFor(x => Model.Title) explícitamente no produce este comportamiento.

¿Cómo puedo evitar que mi plantilla de editor muestre el valor de ViewBag.Title sin mantener una plantilla de editor personalizada para mi modelo?

Código

@{ ViewBag.Title = "Edit Post " + Model.Title; } @Html.EditorFor(x => Model.Title) @* renders "My Title" text box *@ @Html.EditorFor(x => Model) @* renders "Edit Post My Title" text box *@


La forma fácil de evitar esto es simplemente no usar ViewBag .

ViewBag es un objeto dinámico y tiene prioridad. Pero puedes meter casi cualquier cosa allí y se vuelve difícil de depurar.

Línea inferior: si necesita mostrar algo dinámico como un título, póngalo en su Model .


Mover la asignación de ViewBag.Title al final de la página funcionó para mí.