如何调整文本框(多行)的大小以适应 ASP .NET C# 中的文本?

How to adapt the size of a Textbox (MultiLine) to a text in ASP .NET C#?

我有一个 .aspx 表单,在 Page_Load 事件中,我从数据库中为控件(文本框、下拉列表等)分配了几个值,但是我有一个文本框控件,其中文本可能非常大或非常小,我想知道是否可以使文本框大小动态化。

当表单完成加载文本框控件时,它显示如下:.

但我想像这样想象它(一切都取决于文本):

文本框代码:

<asp:TextBox runat="server" ID="txt" TextMode="MultiLine" Height="80px" ReadOnly="true" CssClass="form-control"></asp:TextBox> 

我正在使用 .NET Framework 4.5.2,我不确定我是否应该使用 jQuery 中的任何功能,如果是,应该如何完成?

您可以在页面加载时使用 Javascript 或 Jquery 轻松完成此操作。

Jquery:

$(function(){//executes when dom is ready

    var textAreaAdjust = function(control) {//function to set the height
        $(control).height(1);
        $(control).height($(control).prop('scrollHeight'));
    }

    textAreaAdjust($('#txt'));// call the function passing the textarea control in
});

Javascript:

document.addEventListener("DOMContentLoaded", function () {

        var textAreaAdjust = function(control){//funciton to measure and set height
            control.style.height = "1px";
            control.style.height = (25+control.scrollHeight)+"px";
        };

        var textControl = document.getElementById("txt");//get the textarea
        textAreaAdjust(textControl);//pass it into the function

}​);

归功于此 answer

您可以使用文字控件

<asp:Literal ID="Literal1" runat="server"></asp:Literal> 

或添加了 runat="server" 的 html div。

<div id="specialDiv" runat="server"></div>

c#

specialDiv.InnerText = "asdfasdf...etc";

请注意,如果您使用 CssClass="form-control",您可能需要通过将 height 设置为 auto 而不是 preset/hard-coded 高度来更新 css .