我是Visual Studio 2010 .NET 4.0动态数据的新手。现在我正在尝试为我的网站做一个简单的下拉列表(用C#编写)。
我有一个名为protocol的字段(如在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):
// 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中的消息。
帮助表示感谢。
答案 0 :(得分:0)
在我看来,这个问题没有开箱即用的方法。但是,在我看来(如果我错了,请纠正我)这个问题有三种可能的解决方案:
将service.protocol -field更改为numeric(int)
更改枚举码:
public enum ProtocolType
{
https = 1,
sftp = 2,
ftps = 3
}
创建自己的FieldTemplate
欢迎提出意见。