使用 ASP.Net MVC 2 脚手架创建编辑表单

Posted

技术标签:

【中文标题】使用 ASP.Net MVC 2 脚手架创建编辑表单【英文标题】:Creating an edit form using ASP.Net MVC 2 scaffolding 【发布时间】:2011-03-22 05:24:10 【问题描述】:

我有以下使用脚手架生成的代码,IDJefe 在我的数据库中是一个 int,但我希望最终用户从组合框中选择一个名称。

我怎样才能做到这一点?

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

有没有更好的办法?

【问题讨论】:

【参考方案1】:

您可以查看编辑器模板。这是一个听起来与您想要做的类似的示例:

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

编辑: 它涉及创建局部视图,然后使用数据注释来调用该视图:

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

【讨论】:

他正在根据静态信息创建下拉列表,而不是从某种数据源获取的信息。

以上是关于使用 ASP.Net MVC 2 脚手架创建编辑表单的主要内容,如果未能解决你的问题,请参考以下文章

ASP.NET MVC

如何在 Rider IDE 中进行 ASP.NET MVC 视图脚手架?

Azure 数据库 asp.net mvc [关闭]

使用命令行如何在 ASP.NET 中首先从 DB 搭建脚手架 - 而不是 ASP.NET Core MVC?

ASP.NET MVC - JQuery - 验证可编辑表列的唯一值

如何在 ASP.NET Core MVC 中使用 select 标签动态编辑数据库表?