2009-01-04 9 views
4

J'essaie d'apprendre ASP.NET MVC et j'ai rencontré ce problème: J'ai un formulaire "voir les détails du produit" que je veux réutiliser comme un ajout/édition forme. (Lorsque vous regardez les détails du produit, si vous avez le droit de le faire, un lien d'édition doit apparaître, il doit réafficher le même formulaire, mais avec les champs textbox activés cette fois.)DRY dans ASP.NET MVC - affichage des détails vs formulaire d'édition

quelque chose comme ceci:

<% var product = ViewData.Model; %> 
<table> 
    <tr> 
    <td>Name</td> 
    </tr> 
    <tr> 
    <td><%= Html.TextBox("Name", product.Name, new { size = "50", disabled = "disabled"})%></td> 
    </tr> 

Est-il possible que je pourrais réutiliser sans mettre logique trop dans la vue? Par exemple, je vais devoir supprimer la partie disabled = "disabled" (mais la partie size doit y rester), pour tout mettre dans un formulaire et ainsi de suite.

Si cela ne peut pas être fait, c'est bien, j'essaie juste de ne pas répéter la même chose plusieurs fois au cas où je devrais le changer (et je le ferai).

Répondre

5

Vous pouvez toujours passer une valeur indiquant quel mode vous êtes ou ce que vous avez des privilèges:

ViewData.Model.CanEdit 

Vous pouvez créer une classe composite pour votre modèle au lieu d'utiliser des produits

public class ProductViewData 
{ 
    public Product Product {get; set;} 
    public bool CanEdit {get; set;} 
} 
10

En utilisant MvcContrib.FluentHtml vous pouvez faire comme ceci (l'amélioration de la suggestion de Todd Smith):

<%=this.TextBox(x => x.Name).Size(50).Disabled(ViewData.Model.CanEdit)%> 
+0

Merci ... Je suppose que j'ai besoin de regarder ça. J'ai marqué la réponse de Todd comme réponse parce que je dois le faire de toute façon, mais votre suggestion est bonne aussi. –

Questions connexes