tag route password page net mvc for data asp all c# asp.net-mvc razor clientid

c# - route - ID de cliente para la propiedad(ASP.Net MVC)



forms asp net core (5)

Como se ha dicho, no necesita preocuparse por ClientID, UniqueID, etc. en ASP.NET MVC, ya que son abstracciones de formas web. Simplemente puede escribir la identificación que desea. También hay un método de extensión para esto:

<%= Html.LabelFor(x => x.Name) %>

Soy un principiante en asp.net mvc, y tengo una duda:

Estoy tratando de hacer una etiqueta para un cuadro de texto en mi vista y me gustaría saber, ¿cómo puedo tomar una identificación que se procesará en el cliente para generar scripts ... por ejemplo:

<label for="<%=x.Name.ClientId%>"> Name: </label> <%=Html.TextBoxFor(x=>x.Name) %>

¿Qué necesito poner en "ClientId" para asegurarme de que el ID correcto se procesará en el control correspondiente?

Gracias

Aclamaciones


Es divertido lo que se puede encontrar en el código fuente gratuito de MVC. Aquí está la respuesta:

@ Html.IdFor o @ Html.NameFor

Entonces cuál es la diferencia? Aquí está el truco:

El NameFor no reemplazaría ningún "." a "_".

Si quieres algún ejemplo, he encontrado este pequeño artículo genial


MVC 4 tiene esto incorporado ahora ... mira this


Pon este código en alguna parte:

using System; using System.Linq.Expressions; using System.Web.Mvc; namespace MvcLibrary.Extensions { public static class HtmlExtensions { public static MvcHtmlString FieldIdFor<TModel, TValue>(this HtmlHelper<TModel> html, Expression<Func<TModel, TValue>> expression) { string htmlFieldName = ExpressionHelper.GetExpressionText(expression); string inputFieldId = html.ViewContext.ViewData.TemplateInfo.GetFullHtmlFieldId(htmlFieldName); return MvcHtmlString.Create(inputFieldId); } } }

Luego en su vista ASPX:

<label for="<%= Html.FieldIdFor(m => m.EmailAddress) %>">E-mail address:</label> <%= Html.TextBoxFor(m => m.EmailAddress) %>

También puede usar esto en llamadas de JavaScript ya que no conocerá la ID del control por adelantado y puede necesitar que algún código JavaScript trabaje en su contra:

<script> $.CoolJQueryFunction(''<%= Html.FieldIdFor(m => m.EmailAddress) %>''); </script>

El método de ayuda de LabelFor HTML, que alguien mencionó aquí, no le permitirá especificar la etiqueta de texto real que desea usar, tiene que decorar sus ViewModels con atributos para establecer el texto de la etiqueta, con mi humilde opinión. Prefiero que esas cosas aparezcan en la parte de la vista de ASPX propiamente dicha, no en algún modelo de dominio / vista. Sin embargo, algunas personas estarán en desacuerdo conmigo.

No estoy seguro de las reglas para publicar enlaces a las publicaciones de blog de uno, pero publiqué un blog sobre este tema exacto: http://www.dominicpettifer.co.uk/Blog/37/strongly-typed--label--elements-in-asp-net-mvc-2


Use lo siguiente:

Model.Name

Simplemente puede hacer una "fuente de vista" o examinar el cuadro de texto renderizado con algo como Firebug para ver qué están generando los métodos Html.xyzFor() . Normalmente generarían un cuadro de texto con los atributos "id" y "name" establecidos en el nombre de la propiedad.