没有为DataType.MultilineText呈现文本区域



我有一个编辑模板在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属性给你所有关于模型属性元数据的信息

相关内容

  • 没有找到相关文章

最新更新