我有一个MVC 3 C#/ ADO.NET /动态数据应用程序设置和工作(ish)。为了进行设置,我创建了一个MVC 3应用程序,添加了动态数据组件,将Presentation,Business和Data拆分为三个项目,设置引用以匹配MVC模式并设置路由和脚手架。
使用标准DD页面模板列出,编辑和插入所有工作,但是我已经找到了一个墙,让表示层将数据类型属性应用于Gridview和Details视图中显示的数据,特别是URL,我想要的输入为DataType.Url,因此使用关联的DD显示属性。
尝试为Link表设置元数据类并应用类似:
的内容[DataType(DataType.Url)]
public object URL {get; set;}
(表格“链接”中的网址字段为“网址”)
..在部分类中,这是我读到的纯DD站点。
有人能指出我正确的方向,或者告诉我这是否可能?
非常感谢。
答案 0 :(得分:0)
是的,这是可能的。我会为Urls编写一个自定义FieldTemplate。使用UIHint元数据,您可以为列分配自定义fieldtemplate。像这样(未经测试):
public partial class FooUrl : System.Web.DynamicData.FieldTemplateUserControl
{
string getUrl()
{
var metadata = MetadataAttributes.OfType<DataTypeAttribute>().FirstOrDefault();
if (metadata == null)
return FieldValueString;
switch (metadata.DataType)
{
case DataType.Url:
string url = FieldValueString;
if (url.StartsWith("http://", StringComparison.OrdinalIgnoreCase) ||
url.StartsWith("https://", StringComparison.OrdinalIgnoreCase))
return url;
return "http://" + FieldValueString;
case DataType.EmailAddress:
return "mailto:" + FieldValueString;
default:
throw new Exception("Unknown DataType");
}
}
protected override void OnDataBinding(EventArgs e)
{
HyperLinkUrl.NavigateUrl = getUrl();
}
public override Control DataControl
{
get
{
return HyperLinkUrl;
}
}
}
}
我希望这会有所帮助。