没有为DataType.MultilineText呈现Textarea

时间:2013-04-12 12:17:28

标签: webforms data-annotations model-binding asp.net-4.5 asp.net-dynamic-data

我在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" />

...但是从我的财产上的数据类型推断它会更好。

由于

1 个答案:

答案 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}}属性为您提供有关模型属性元数据的所有信息。