Necesito crear una función que solo sea necesaria dentro de un archivo cshtml. Puede pensar en mi situación como métodos de página ASP.NET, que son servicios web mínimos implementados en una página, ya que tienen un alcance de una página. Sé acerca de los ayudantes HTML (métodos de extensión), pero mi función solo es necesaria en un archivo cshtml. No sé cómo crear una firma de función dentro de una vista. Nota : Estoy usando el motor de plantillas Razor.
asp.net-mvc
asp.net-mvc-3
razor
Saeed Neamati
fuente
fuente
@functions
métodos, así que me gusta esta respuesta.¿Por qué no declarar esa función dentro del archivo cshtml?
fuente
functions
solución proporciona más flexibilidad para sus tipos de devolución. Sin embargo, ambas respuestas obtienen +1 en mi libro, ya que ambas son información útil.<p>Welcome, @username.</p>
versusreturn new HtmlString("<p>Welcome, " + Html.Encode(username) + ".</p>");
.@helper
sin embargo, el uso en una sola vista no lo pone a disposición de otras vistas. La razón por la que me gusta más @helper es que puedes poner html entre tus llaves.@functions
no te permite (fácilmente) hacer eso.@helper
y@functions
se pueden compartir entre muchas vistas, y ambos pueden ser declarados y utilizados por una sola vista (y personalmente he encontrado uso para ellos en ambos escenarios compartidos / únicos). En mi humilde opinión, la única diferencia práctica entre ellos es el hecho de que un asistente de vista agrega azúcar sintáctico para devolver fragmentos HTML representados (o, más apropiado,HelperResult
instancias), mientras que una función de vista generalmente solo es útil para devolver tipos de valores o referencias simples.Si su método no tiene que devolver html y tiene que hacer otra cosa, puede usar un método lambda en lugar de auxiliar en Razor
fuente
Echa un vistazo a los ayudantes declarativos de afeitar
fuente
Si desea acceder a las variables globales de su página, puede hacerlo:
fuente
GetLoadingState()
Aquí está la función local.