서버 컨트롤을 만들고 test.aspx 코드가 아래에 나와 있습니다.asp.net 서버 컨트롤에서 null 값 반환을 피하는 다른 방법은
dll이로드되면 RenderContents()
함수가 호출됩니다.
DataSource 속성으로 제어 전송 이지만 ViewState["DataSource"]
은 null
을 반환합니다.
ViewState["DataSource"] = _Pages_dummy;
내 질문입니다 - -
가그것을 방지하기 위해 , 내가 사용 ViewState["DataSource"]
초기화? ViewState["DataSource"]
null
값을 반환하지 않도록 을 내가 초기화를 사용하지 않으려면, 어떤 다른 방법은 "
==================================== ===================
using System.Web;
using System.Web.UI;
using System.Web.UI.WebControls;
namespace ServerControl2
{
[DefaultProperty("Text")]
[ToolboxData("<{0}:ServerControl1 runat=server></{0}:ServerControl1>")]
public class ServerControl1 : WebControl
{
private string[,] _Pages_dummy= { {"1","2","3","4"} , {"11","22","33","44"}};
public ServerControl1()
{
ViewState["DataSource"] = _Pages_dummy;
// if user do not initialize viewstate , we use dummmey array .
}
public ServerControl1(string[,] pages)
{
ViewState["DataSource"] = pages;
// user must initialize viewstate .
}
[Bindable(true)]
[Category("Appearance")]
[DefaultValue("")]
[Localizable(true)]
public string[,] DataSource
{
get
{
return (string[,])ViewState["DataSource"];
}
set
{
ViewState["DataSource"] = value;
}
}
[Bindable(true)]
[Category("Appearance")]
[DefaultValue("")]
[Localizable(true)]
protected override HtmlTextWriterTag TagKey
{
get
{
return HtmlTextWriterTag.Div;
}
}
protected override void RenderContents(HtmlTextWriter output)
{
output.WriteBeginTag("div");
if (DataSource != null)
{
for (int i = 0; i < DataSource.GetLength(0); i++)
{
for (int j = 0; j < DataSource.GetLength(1); j++)
{
}
}
}
} // RenderContents
}// class
}// namespace
test.aspx.cs viewstate가이 데이터 소스 속성에 null의 경우
ServerControl2.ServerControl1 n1 = new ServerControl2.ServerControl1();
n1.DataSource[0,0] = "hjkhjk";
n1.DataSource[0,1] = "jkljk";
n1.DataSource[0,2] = "hjk";
n1.DataSource[0,3] = "fjgfjhhgj";
Response.Write(n1.DataSource[0,0]);
Response.Write(n1.DataSource[0,1]);
Response.Write(n1.DataSource[0,2]);
Response.Write(n1.DataSource[0,3]);
귀하의 궁금한 점은 무엇입니까? –
나는 이것을 왜 원하는지 확실히 알 수는 없지만 ViewState [ "DataSource"]에 항상 값을 지정하려면 * something *로 초기화해야합니다. 그것은 비어 있음으로 시작합니다. –
viewstate 변수에 값을 넣지 않고 검색하려고하면 null 이외의 값을 검색 할 수 있습니까? – dave823