【问题标题】:How to create DropDownList in VS2010 .NET 4.0 Dynamic Data Website如何在 VS2010 .NET 4.0 动态数据网站中创建 DropDownList
【发布时间】:2012-07-07 13:25:53
【问题描述】:

我是 Visual Studio 2010 .NET 4.0 动态数据的新手。现在我正在尝试为我的网站做一个简单的下拉列表(用 C# 编写)。

我有一个称为协议的字段(如 TCP 协议中的)。我希望用户能够选择静态值之一。 在过去使用经典的 ASP 和 HTML 时,我会使用这样的东西:

<form name=form1 method="POST" action="./insert.asp">
...
     <select name="PROTOCOL" size="1">
        <option value="https" selected>https
        <option value="sftp">sftp
        <option value="ftps">ftps
     </SELECT>
...
</form>

...然后在./insert.asp中处理数据库。

到目前为止,我已经找到了有关如何在 Visual Studio 2008 (.NET 3.5) 中执行此操作的说明,但这在 WS2010 和 .NET 4.0 中不起作用: http://csharpbits.notaclue.net/2008/07/dynamic-data-and-field-templates-your.html

按照http://www.asp.net/web-forms/videos/aspnet-dynamic-data 中的说明,我认为为了自定义我需要的字段

  • 在 App_Code 文件夹 (MyService.cs) 中为我的自定义代码创建文件。
  • 为我的 MS-SQL 表(服务)创建一个“公共部分类”。

这是我的(¿可怜的?)努力(App_Code/MyService.cs):

// MyService.cs
using System;
using System.ComponentModel.DataAnnotations;
using System.Web;
using System.ComponentModel;

   [MetadataType(typeof(serviceMetadata))]
    public partial class service
    {

    }

    public class serviceMetadata
    {
        [EnumDataType(typeof(ProtocolType))]
        public object protocol { get; set; }

    }

   public enum ProtocolType
    {
        https,
        sftp,
        ftps
    }

这构建正常,但运行它以“ArgumentException 未由用户代码处理/传入的值必须是枚举基础或枚举的基础类型,例如 Int32。”结束。 \DynamicData\FieldTemplates\Enumeration.ascx.cs -file 中的消息。

帮助表示赞赏。

【问题讨论】:

    标签: visual-studio-2010 c#-4.0 drop-down-menu asp.net-4.0 dynamic-data


    【解决方案1】:

    好的,既然没有人试图回答这个问题,我会尝试回答我自己的问题。

    在我看来,这个问题没有现成的方法。但是,在我看来(如果我错了,请纠正我)这个问题有三种可能的解决方案:

    1. 更改数据库结构
      • 添加新表,其中包含协议并将其链接到服务表:
        • 添加包含这些字段的协议表。
          • protocols.id (int, Primary Key)
          • protocols.protocol (char(10))
      • 删除(删除)service.protocol -field
      • 添加 service.protocols_id -field。
      • 建立关系:FK:service.protocols_id --references-->> PK:protocols.id
    2. 将 service.protocol -field 更改为 numeric (int)

    3. 创建您自己的字段模板

      • 需要深入了解 .NET 4.0、DynamicData、C#(或任何您的编程语言)、数据上下文(=表示数据库实体的类)
      • 您可以通过右键单击 ...\DynamicData\FieldTemplates\ -文件夹开始,选择 DynamicDataField,重命名为 MyDropDownList,单击添加。
      • 关于这个主题的更多信息:http://msdn.microsoft.com/en-us/library/cc488522.aspx

    欢迎评论。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2012-02-19
      • 1970-01-01
      • 1970-01-01
      • 2023-04-06
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多