0

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

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

谢谢

4

1 回答 1

0

您可以手动编辑动态数据字段模板。您需要做的就是进行以下OnInit控制检查Text_Edit.ascx

protected override void OnInit(EventArgs e)
{
    base.OnInit(e);

    if(Column.DataTypeAttribute.DataType == DataType.MultilineText)
        TextBox1.TextMode =  TextBoxMode.MultiLine;
}

ColumnFieldTemplateUserControl的属性为您提供有关模型属性元数据的所有信息。

于 2013-04-14T13:35:08.190 回答