0

Visual Studio 2010.NET4.0動的データの初心者です。今、私は自分のWebサイト(C#で記述)の簡単なドロップダウンリストを作成しようとしています。

プロトコルと呼ばれるフィールドがあります(TCPプロトコルのように)。ユーザーが静的な値の1つを選択できるようにしたいと思います。昔は、従来の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ファイルのメッセージ。

感謝します。

4

1 に答える 1

0

OK、誰もこれに答えようとしなかったので、私は自分の質問に答えようとします。

この問題には、すぐに使用できる方法はないようです。しかし、私の心の中で(私が間違っている場合は私を訂正してください)、この問題の3つの可能な解決策があります:

  1. データベース構造を変更する
    • プロトコルを含む新しいテーブルを追加し、サービステーブルにリンクします。
      • これらのフィールドを含むprotocols-tableを追加します。
        • protocol.id(int、主キー)
        • protocol.protocol(char(10))
    • service.protocol -fieldを削除(ドロップ)します
    • service.protocols_idフィールドを追加します。
    • 関係を作成します:FK:service.protocols_id --references->> PK:protocols.id
  2. service.protocol -fieldをnumeric(int)に変更します

  3. 独自のFieldTemplateを作成する

    • .NET 4.0、DynamicData、C#(またはプログラミング言語が何であれ)、データコンテキスト(=データベースエンティティを表すクラス)に関する深い知識が必要です。
    • ... \ DynamicData \ FieldTemplates \ -folderを右クリックし、DynamicDataFieldを選択し、名前をMyDropDownListに変更して、[追加]をクリックして開始できます。
    • この件に関する詳細:http://msdn.microsoft.com/en-us/library/cc488522.aspx

コメントは大歓迎です。

于 2012-07-12T10:34:47.877 に答える