Html.Zone de texte conditionnel attribut avec ASP.NET MVC Aperçu 5
J'ai un typage fort MVC Vue de Contrôle qui est responsable de l'INTERFACE utilisateur, où les utilisateurs peuvent créer et modifier des éléments Client. Je voudrais qu'ils soient en mesure de définir la ClientId
sur la création, mais pas de le modifier, et cela devrait être reflété dans l'INTERFACE utilisateur.
À cette fin, j'ai la ligne suivante:
<%= Html.TextBox("Client.ClientId", ViewData.Model.ClientId, new
{ @readonly =
(ViewData.Model.ClientId != null && ViewData.Model.ClientId.Length > 0
? "readonly" : "false")
} )
%>
Il semble que peu importe la valeur que je donne à l'attribut lecture seule (même les "faux" et ""), Firefox et IE7 faire de l'entrée en lecture seule, ce qui est gênant contre-intuitif. Est-il gentil, ternaire-opérateur basé à la baisse de l'attribut complètement si il n'est pas nécessaire?
Vous devez vous connecter pour publier un commentaire.
Problème difficile... Cependant, si vous souhaitez définir uniquement les
readonly
attribut, vous pouvez le faire comme ceci:Si vous souhaitez définir d'autres attributs ensuite, vous devez définir deux types anonymes et ont de multiples copies des attributs. Par exemple, quelque chose comme ceci (que je n'aime pas de toute façon):
Si vous souhaitez définir plusieurs attributs, et à la condition que readonly sans dupliquer les autres attributs,
vous pouvez utiliser le Dictionnaire au lieu de types anonymes pour les attributs.
par exemple
Et alternative, c'est juste pour l'émettre au bon vieux HTML. Oui, l'éditeur va vous faire croire que vous êtes dans l'erreur, mais qui semble se produire assez fréquemment avec VS2008SP1. Cet exemple est spécifiquement pour les cases à cocher qui semble être complètement perdu dans CTP5, mais il vous donne une idée de la façon d'émettre conditionnelle attributs.
Astuce: Ses la simple présence de l'readonly/désactivé attribut qui permet de l'élément en lecture seule ou désactivé dans le navigateur.
Je pense qu'il devrait être
au lieu de cela, dans leppies réponse.
Au moins il ne fonctionne pas pour moi avec # mais il a travaillé avec =. Ai-je fais quelque chose de mal? Merci pour l'astuce en tout cas 🙂
$(function() {
$("[readonly='false']").removeAttr("readonly");
});
j'utilise ceci :
J'ai essayé la plupart des suggestions ci-dessus et maintenant je suis arrivé à la plus simple avec une seule ligne. Combiner 2 anonyme html attributs de l'objet en déclarant flétrir l'une d'elle comme de type "objet".
@readonly = false
est toujours interprété commereadonly