我有一个编辑模板在ASP。. NET 4.5 Web Forms FormView。我已经在FormView上设置了ItemType,所以我使用DynamicControls来显示和编辑字段。
<asp:FormView runat="server" ItemType="FooModel">
<EditItemTemplate>
<asp:DynamicControl runat="server" ID="message" DataField="Message" Mode="Edit" />
</EditItemTemplate>
</asp:FormView>
这似乎工作正常,直到我设置我的ItemType属性的DataType,使其多行,像这样。
public class FooModel
{
[DataType(DataType.MultilineText)]
public string Message { get; set; }
}
这仍然给我一个标准的文本输入。什么好主意吗?
我可以使用 来解决这个问题<asp:TextBox ID="Message" Text='<%# Bind("Message") %>' runat="server" TextMode="MultiLine" />
…但是从我的属性上的数据类型推断出来会更好。
谢谢
可以手动编辑动态数据字段模板。您所需要做的一切就是在Text_Edit.ascx
控制的OnInit
中进行以下检查:
protected override void OnInit(EventArgs e)
{
base.OnInit(e);
if(Column.DataTypeAttribute.DataType == DataType.MultilineText)
TextBox1.TextMode = TextBoxMode.MultiLine;
}
FieldTemplateUserControl的Column
属性给你所有关于模型属性元数据的信息