AnónimoRatón
Tengo en una de mis vistas el siguiente código de afeitar:
@if (item.PMApproved != true) {
<input type="button" class="btnresetinvoice button" value="Reset" data-invoiceid="@item.InvoiceId" />
}
else {
<input type="button" class="btnresetinvoice button" value="Reset" data-invoiceid="@item.InvoiceId" disabled="disabled" />
}
Bastante duro. Básicamente, quiero deshabilitar el botón bajo ciertas condiciones, ya que podrías resolverlo a partir del código. ¿Cuál sería una forma más deseable de hacer esto?
simone s.
Prueba esto:
<button type="submit" disabled="@(!item.PMApproved)"></button>
-
Única solución en esta página que funciona para mí en
.Net Core 2.1
– Alex
24 de junio de 2018 a las 9:06
Brendan largo
No sé qué idioma estás usando, pero es posible que puedas mover tu if
declaración más cercana a la diferencia real entre las dos líneas:
<input type="button" class="btnresetinvoice button" value="Reset"
data-invoiceid="@item.InvoiceId"
@{ if(item.PMApproved != true) {
@:disabled="disabled"
} }
/>
-
No parece estar aceptando la parte deshabilitada en la declaración if. Dice que el nombre ‘discapacitado’ no existe en el contexto actual
– Ratón Anónimo
15/04/2012 a las 21:40
-
@AnonyMouse – Corregido ahora gracias a Yogu. En el futuro, debe incluir el idioma en su pregunta para que las personas no tengan que adivinar la sintaxis.
– Brendan largo
15/04/2012 a las 21:46
-
Estoy tratando de usar esto en mi código pero el
@:
parece estar escondiendo la}
en mi código que causa un error de sintaxis, ¿alguna idea al respecto?– Mykroft
20 de junio de 2013 a las 14:48
-
@Mykroft ¿Tal vez intente poner el texto sin formato en su propia línea? O simplemente el
<% ... %>
sintaxis en su lugar?– Brendan largo
20 de junio de 2013 a las 15:49
-
terminé poniendo
this.write
en cambio. No es gran cosa, pero es posible que desee volver a verificar el código en su respuesta y asegurarse de que funcione con el/>
al final ahí.– Mykroft
20 de junio de 2013 a las 17:30
david subvención
Una solución centrada en el marcado con la ayuda de un nuevo método de extensión:
public static class HtmlExtensions
{
public static HtmlString DisabledIf(this HtmlHelper html, bool condition)
{
return new HtmlString(condition ? "disabled=\"disabled\"" : "");
}
}
En sus puntos de vista, reutilice el wazoo:
<button type="reset" @Html.DisabledIf(someCondition)>Clear Fields</button>
Bien reutilizable, y el marcado renderizado es muy limpio con respecto a los espacios en blanco:
<button type="reset" disabled="disabled">Clear Fields</button>
-
Gran solución que realmente sigue el espíritu del marco. Asegúrese de colocar el método en un espacio de nombres que MVC pueda ver.
– Daniel
9 de febrero de 2018 a las 0:07
Andrii
Usando la maquinilla de afeitar asp.net mvc5:
@if(condition)
{
<button data-toggle="collapse" data-target="#content">Details</button>
}
else
{
<button disabled>Details</button>
}
Evita intentar habilitar el botón desde DevTools, porque la maquinilla de afeitar no está visible para DevTools
<input type="button" value="Reset" @{@((!item.PMApproved) ? null : new { disabled = "disabled" })}; />
No es necesario ese código inflado, solo mantenlo simple 🙂
darin dimitrov
Un ayudante podría ayudar:
public static class HtmlExtensions
{
public static IHtmlString ApproveButton(this HtmlHelper htmlHelper, MyViewModel item)
{
var button = new TagBuilder("input");
button.Attributes["type"] = "button";
button.Attributes["value"] = "Reset";
button.AddCssClass("btnresetinvoice");
button.AddCssClass("button");
button.Attributes["data-invoiceid"] = item.InvoiceId.ToString();
if (item.PMApproved)
{
button.Attributes["disabled"] = "disabled";
}
return new HtmlString(button.ToString(TagRenderMode.SelfClosing));
}
}
y luego:
@Html.ApproveButton(item)
Oğuzhan Türk
<button @(isEnabled ? null : "disabled")>Butt</button>
¿Qué idioma es este (además de HTML)?
– Brendan largo
15/04/2012 a las 21:33
¿Qué podría ser más deseable? ¿Qué fallas ves en tu solución?
– Tomás
15/04/2012 a las 21:34
Es el motor de plantilla de afeitar que permite la creación de secuencias de comandos C# a través de
@
prefijo.– Yogu
15/04/2012 a las 21:40