2010-07-28 4 views
3

J'ai le code suivant qui a été généré en utilisant échafaudage et IDJefe est un int dans ma base de données, mais je veux que les utilisateurs finaux choisissent un nom d'un comboBox.Création d'un formulaire d'édition en utilisant ASP.Net MVC 2 échafaudage

Comment pourrais-je accomplir cela?

<%@ Page Title="" Language="C#" MasterPageFile="~/Views/Shared/Site.Master" Inherits="System.Web.Mvc.ViewPage<SeguimientoDocente.Area>" %> 

<asp:Content ID="Content1" ContentPlaceHolderID="TitleContent" runat="server"> 
    UTEPSA | Editando Area 
</asp:Content> 

<asp:Content ID="Content2" ContentPlaceHolderID="MainContent" runat="server"> 

    <h2>Editando Area: <%: Model.Nombre %></h2> 

    <% using (Html.BeginForm()) {%> 
     <%: Html.ValidationSummary(true) %> 

     <fieldset> 
      <legend>Informacion Detallada de Area | <%: Model.Nombre %></legend> 

      <div class="editor-label"> 
       <%: Html.LabelFor(model => model.Nombre) %> 
      </div> 
      <div class="editor-field"> 
       <%: Html.TextBoxFor(model => model.Nombre) %> 
       <%: Html.ValidationMessageFor(model => model.Nombre) %> 
      </div> 

      <div class="editor-label"> 
       <%: Html.LabelFor(model => model.IDJefe) %> 
      </div> 
      <div class="editor-field"> 
       <%: Html.TextBoxFor(model => model.IDJefe) %> 
       <%: Html.ValidationMessageFor(model => model.IDJefe) %> 
      </div> 

      <p> 
       <input type="submit" value="Save" /> 
      </p> 
     </fieldset> 

    <% } %> 

    <div> 
     <%: Html.ActionLink("Volver a Listado General", "Index") %> 
    </div> 

</asp:Content> 

J'ai essayé ce qui suit en vain. Je pourrais faire quelque chose comme ceci, mais créer un nouvel objet pour une chose simple comme celle-ci semble être un gâchis.

public ActionResult Edit(int id) 
     { 
      Area area = areaRepository.GetArea(id); 
      JefeRepository jefe = new JefeRepository(); 
      ViewData["Jefes"] = new SelectList(jefe.FindAllJefes(), area.Jefe.Nombre); 
      return View(area); 
     } 

Y a-t-il un meilleur moyen?

Répondre

0

Vous pouvez consulter les modèles d'éditeur. Voici un exemple qui semble similaire à ce que vous voulez faire:

http://blogs.msdn.com/b/nunos/archive/2010/02/08/quick-tips-about-asp-net-mvc-editor-templates.aspx

Edit: Il consiste à créer une vue partielle et en utilisant les annotations de données pour appeler ce point de vue:

<%@ Control Language="C#" Inherits="System.Web.Mvc.ViewUserControl<string>" %> 
<%= Html.DropDownList("",new SelectList((string[]) ViewData["Ratings"],Model)) %> 
+0

Il création une liste déroulante d'informations statiques, pas d'informations extraites d'une source de données quelconque. –

+1

Avez-vous regardé le dernier exemple? Voir ci-dessus modifier. –

Questions connexes