이전 asp.net 웹 응용 프로그램을 사용하고 있고 다른 스레드에서 부트 스트랩 텍스트 상자에 텍스트를 쓰려고 할 때 문제가 있습니다.다른 스레드/클래스에서 텍스트 상자에 쓰기
하여 default.aspx.cs :
using System.Text;
using System.IO;
using System.Diagnostics;
using System.Threading;
using AspNet;
namespace ProblemApp
{
public partial class _Default : Page
{
protected void Page_Load(object sender, EventArgs e)
{
}
protected void UpdateButton_Click(object sender, EventArgs e)
{
if (this.TextBox1.Text == "")
{
TextBox1.Text = "TEST";
}
}
protected void UpdateButton2_Click(object sender, EventArgs e)
{
AutoLogControl NewAutoLogger = new AutoLogControl();
Thread AutoLoggerThread = new Thread(() => NewAutoLogger.StartAutoLogger(sender));
AutoLoggerThread.Start();
}
}
}
Autolog.cs : 당신이 볼 수 있듯이
using System;
using System.Collections.Generic;
using System.Linq;
using System.IO;
using System.Web;
using System.Web.UI;
using System.Text;
using System.Data;
using System.Data.SqlClient;
using System.Data.SqlTypes;
using System.Text.RegularExpressions;
namespace ProblemApp
{
public partial class AutoLogControl : _Default
{
public void StartAutoLogger(object sender)
{
//would normally listen for a condition to be met, but for
//this example, just set the Textbox. This is where my issue
//is. TextBox is null.
TextBox1.Text = "TEST 2";
}
}
}
, 내가 설정해야합니다 나는 아래의 코드로 웹 응용 프로그램을 단순화 StartAutoLogger(), TextBox하지만 시도 할 때 null 참조를 가져옵니다. 텍스트를 설정하려면 _Default 내에서 공용 메서드를 만드는 등 여러 가지 다른 솔루션을 시도했지만이 작동하지 않습니다. 필요한 경우 지원 파일이 있습니다.
을 Default.aspx :
<%@ Page Title="Home Page" Language="C#" MasterPageFile="~/Site.Master" AutoEventWireup="true" CodeBehind="Default.aspx.cs" Inherits="ProblemApp._Default" %>
<asp:Content ID="BodyContent" ContentPlaceHolderID="MainContent" runat="server">
<div class="row panel-body verticle-align">
<div class="col-lg-3">
<h4><span class="label label-default"> Text Box : </span></h4>
</div>
<div class="col-lg-9">
<asp:TextBox ID ="TextBox1" name="Textbox1" runat="server" Width="100%" />
</div>
</div>
<div class="row btn-block panel-body">
<div class="col-lg-4">
<asp:Button ID="UpdateButton" runat="server" OnClick="UpdateButton_Click" Text="Update" CssClass="btn btn-default" />
</div>
<div class="col-lg-4">
<asp:Button ID="UpdateButton2" runat="server" OnClick="UpdateButton2_Click" Text="Update 2" CssClass="btn btn-default" />
</div>
</div>
</asp:Content>
Default.aspx.designer.cs는 :
namespace ProblemApp {
public partial class _Default {
protected global::System.Web.UI.WebControls.TextBox TextBox1;
protected global::System.Web.UI.WebControls.Button UpdateButton;
protected global::System.Web.UI.WebControls.Button UpdateButton2;
}
}
ID "TextBox"를 다른 것으로 변경하고 더 나은 이름을 가진 이름 속성을 추가 할 수 있습니까? –
명확성을 위해 업데이트되었습니다. – user7991682