我在ASP.NET 4.5 Web窗体FormView中有一个EditItemTemplate。我在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" />
...但是从我的财产上的数据类型推断它会更好。
由于
答案 0 :(得分:0)
您可以手动编辑动态数据字段模板。您需要的一切就是在OnInit
Text_Edit.ascx
控件的protected override void OnInit(EventArgs e)
{
base.OnInit(e);
if(Column.DataTypeAttribute.DataType == DataType.MultilineText)
TextBox1.TextMode = TextBoxMode.MultiLine;
}
中进行以下检查:
Column
FieldTemplateUserControl的{{1}}属性为您提供有关模型属性元数据的所有信息。