8
votes

Quel est l'avantage réel d'attribut ScafoldColumn défini sur False dans les propriétés d'identifiant MVC 3

Je suis nouveau à MVC et lorsque j'ai construit mes classes de modèle pour une première approche de code, chaque colonne ID de clé avait l'attribut [ScaffoldColumn (false)] défini. Je l'ai fait parce que je ne voulais pas que les identifiants affichés dans les points de vue soient évidemment, et je sais qu'un travail à ce problème supprimerait le HTML généré par l'interface utilisateur dans chaque vue contenant un champ d'identification.

Le problème que j'ai couru en utilisant scabaffoldcolumn défini sur false dans les modèles a été remarqué pour la première fois lors d'une méthode d'édition pour une vue, et j'ai reçu cette erreur. : Stocker la mise à jour, l'insertion ou la suppression de l'instruction affectait un nombre imprévu de lignes (0). Lorsque j'ai exécuté le code de débogage, la propriété ID était en fait définie sur zéro comme indiqué dans mon avis edit httpport méthode.

Ma question que j'espère que quelqu'un pourrait élaborer, est ce que le point d'avoir un attribut comme ScaffoldColumn en MVC si l'ID n'est pas envoyé à une méthode (s) de contrôleur comme dans ce cas un edit httpport ? Devrais-je simplement y aller à la fois la voie de la vie ancienne et supprimer le marquage HTML dans chaque vue créé par les temples MVC générés lorsque cet attribut n'est pas ajouté à une clé / des propriétés de clé étrangère?

Le travail autour que j'ai trouvé si vous définissez cet attribut sur false ajouté un paramètre d'identifiant à chaque httpport méthode et de définition du champ de propriété d'identifiant approprié avant d'appeler SAVECHANGES () .


1 commentaires

Le gars de ce blog explique comment utiliser ScaffoldColumn. Si vous êtes plus un gars visuel comme moi, vous aimerez le message. Il a des captures d'écran, une vidéo et tout. 20fingers2brains.blogspot.se/2013/03/...


3 Réponses :


2
votes

Eh bien, vous ne voulez pas que ce soit échafaudé comme un champ modifiable, mais bien sûr, vous le souhaitez sous la forme, comme vous l'avez remarqué. La solution consiste simplement à l'ajouter manuellement sous forme de champ caché dans la vue. Quelque chose comme ceci: xxx


4 commentaires

C'est un excellent travail autour de ce que je n'ai pas pensé, mais quelle est la manière commune la plupart des programmeurs MVC traitent de masquer les propriétés principales sous des vues, ou est votre exemple la solution standard lors de la définition d'un échafaudage sur OFF, puis ajoutez un champ caché à la vue. ? Merci...


Je ne sais pas quelle est la solution standard, mais c'est comme ça que je le fais. Il est un peu surprenant qu'il n'y ait apparemment aucun moyen d'échafauder un champ aussi caché. Vous peut faire éditeur pour rendre une propriété comme champ masqué, cependant: Stackoverflow.com/questions/4542972/...


... Ajout, je pense qu'en général échafaudage n'est pas destiné à être prêt à la production, juste un moyen d'obtenir quelque chose de fonctionnel rapidement.


Je pense aussi, @ html.Hiddenfor est la solution standard jusqu'à présent dans MVC dans de tels scénarios



3
votes

Vous pouvez utiliser des annotations de données pour cela et travailler avec: xxx

de cette façon, votre champ sera affiché à l'aide d'une entrée cachée dans la vue. Pas besoin d'apporter des modifications, la vue saura comment l'afficher.


0 commentaires

3
votes

[Scaffoldcolumn (Faux)], il masque simplement la propriété. Supposons que vous ayez une propriété auto incrémentée d'une pièce d'identité. L'utilisateur n'a rien à voir avec cette propriété. Alors utilisez-le pour masquer la propriété en vue.


0 commentaires