2010-07-28 2 views
3

У меня есть следующий код, который был сгенерирован с использованием строительных лесов, а IDJefe - это int в моей базе данных, но я хочу, чтобы конечные пользователи выбирали имя из comboBox.Создание формы редактирования с использованием ASP.Net MVC 2 scaffolding

Как я мог это сделать?

<%@ 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> 

Я пробовал следующее безрезультатно.

<%: Html.DropDownList(Model.Jefes???? %> 

Я мог бы сделать что-то подобное, но создание нового объекта для простой вещи вроде этого кажется пустой тратой.

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); 
     } 

Есть ли лучший способ?

ответ

0

Вы можете взглянуть на Шаблоны Редактора. Вот пример того, что звуки, похожие на то, что вы хотите сделать:

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

Edit: Она включает в себя создание частичного вида, а затем с помощью аннотаций данных, чтобы вызвать этот вид:

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

Он создает выпадающий из статической информации, а не из информации, полученной из какого-либо источника данных. –

+1

Вы посмотрели последний пример? См. Выше edit. –