C# 数组长度不为';在智能意义上看不到
现在,我将消息数组作为查询字符串发送到另一个页面。但是,当我捕获下一个页面时,我们有一个arr.Length know(通常显示intellisense),但在本例中它不显示 这是另一页的消息C# 数组长度不为';在智能意义上看不到,c#,c#-4.0,C#,C# 4.0,现在,我将消息数组作为查询字符串发送到另一个页面。但是,当我捕获下一个页面时,我们有一个arr.Length know(通常显示intellisense),但在本例中它不显示 这是另一页的消息 private void check(string keyword , params Array[] msg_arr) { switch (keyword.ToUpper()) { case "SETTELG":
private void check(string keyword , params Array[] msg_arr)
{
switch (keyword.ToUpper())
{
case "SETTELG":
Response.Redirect("../SMSFunction/SeenSMS.ascx?value=1&arr" + msg_arr);
break;
下面的代码是我想要捕获传递的值和数组(msg_arr)的下一页,但是长度不起作用
protected void Page_Load(object sender, EventArgs e)
{
if (!IsPostBack)
{
string Moose = Request.QueryString[1];
}
if (msg_arr != null)
{
if ((msg_arr.Length == 3) && (msg_arr[1].ToLower() == "slett"))
{
}
}
}
这是第二个代码截图,您可以看到未显示的长度
这里有很多错误
private void check(string keyword , params Array[] msg_arr)
此函数是否真的传递了一个array
s数组?我认为string[]
或object[]
更可能被传递
Response.Redirect("../SMSFunction/SeenSMS.ascx?value=1&arr" + msg_arr);
这将调用msg\u arr
上的ToString()
,它作为一个数组,将产生如下结果:
"../SMSFunction/SeenSMS.ascx?value=1&arrSystem.Array[]"
Array
不会重写ToString()
,因此您可以从中获得输出类型的完全限定名的数组,我认为这不是您想要的
最后,我们看到了您的第二段代码,但您甚至没有向我们展示任何试图设置新msg_arr
变量的代码。但是它无法获得原始值msg_arr
,因为您还没有传递它
您需要决定如何将数组打包到查询字符串中。如果说,
msg_arr
应该是可读字符串的数组(check
定义中的params string[]msg_arr
),那么您可以尝试以下操作:
Response.Redirect("../SMSFunction/SeenSMS.ascx?value=1&arr=" + string.Join("|",msg_arr));
protected void Page_Load(object sender, EventArgs e)
{
string[] msg_arr = Request.QueryString["arr"].Split('|');
/* rest of method */
其中,|
是不应出现在所传递字符串中的字符。()
然后,您可以使用以下方法将其重建回数组:
Response.Redirect("../SMSFunction/SeenSMS.ascx?value=1&arr=" + string.Join("|",msg_arr));
protected void Page_Load(object sender, EventArgs e)
{
string[] msg_arr = Request.QueryString["arr"].Split('|');
/* rest of method */
()
当然,如果字符串的长度(或数量)太大,现在可能会有问题,通过查询字符串传递它们可能根本不合适。这里有很多错误
private void check(string keyword , params Array[] msg_arr)
此函数是否真的传递了一个array
s数组?我认为string[]
或object[]
更可能被传递
Response.Redirect("../SMSFunction/SeenSMS.ascx?value=1&arr" + msg_arr);
这将调用msg\u arr
上的ToString()
,它作为一个数组,将产生如下结果:
"../SMSFunction/SeenSMS.ascx?value=1&arrSystem.Array[]"
Array
不会重写ToString()
,因此您可以从中获得输出类型的完全限定名的数组,我认为这不是您想要的
最后,我们看到了您的第二段代码,但您甚至没有向我们展示任何试图设置新msg_arr
变量的代码。但是它无法获得原始值msg_arr
,因为您还没有传递它
您需要决定如何将数组打包到查询字符串中。如果说,
msg_arr
应该是可读字符串的数组(check
定义中的params string[]msg_arr
),那么您可以尝试以下操作:
Response.Redirect("../SMSFunction/SeenSMS.ascx?value=1&arr=" + string.Join("|",msg_arr));
protected void Page_Load(object sender, EventArgs e)
{
string[] msg_arr = Request.QueryString["arr"].Split('|');
/* rest of method */
其中,|
是不应出现在所传递字符串中的字符。()
然后,您可以使用以下方法将其重建回数组:
Response.Redirect("../SMSFunction/SeenSMS.ascx?value=1&arr=" + string.Join("|",msg_arr));
protected void Page_Load(object sender, EventArgs e)
{
string[] msg_arr = Request.QueryString["arr"].Split('|');
/* rest of method */
()
当然,如果字符串的长度(或数量)太大,现在可能会有问题,通过查询字符串传递它们可能根本不合适。您不能在查询字符串中传递整个集合。您唯一能做的就是传递集合的一个元素。i、 无法传递数组,但可以传递数组[0]。toString()。请通过会话变量以简单的方式执行此操作。将数组存储在Page1.aspx中的会话变量中,并在Page2.aspx中检索。示例代码如下所示 第1.aspx页
protected void Page_Load(object sender, EventArgs e)
{
int[] array = { 1, 2, 3, 4, 5 };
Session["Array"] = array; Response.Redirect("About.aspx");
}
第2.aspx页
protected void Page_Load(object sender, EventArgs e)
{
int[] array;
if (Session["Array"] != null)
{
array = (int[])Session["Array"];
if (array.Length == 3)
{
/////implementaion
}
}
}
不能在查询字符串中传递整个集合。您唯一能做的就是传递集合的一个元素。i、 无法传递数组,但可以传递数组[0]。toString()。请通过会话变量以简单的方式执行此操作。将数组存储在Page1.aspx中的会话变量中,并在Page2.aspx中检索。示例代码如下所示 第1.aspx页
protected void Page_Load(object sender, EventArgs e)
{
int[] array = { 1, 2, 3, 4, 5 };
Session["Array"] = array; Response.Redirect("About.aspx");
}
第2.aspx页
protected void Page_Load(object sender, EventArgs e)
{
int[] array;
if (Session["Array"] != null)
{
array = (int[])Session["Array"];
if (array.Length == 3)
{
/////implementaion
}
}
}
msg_arr
在第二段代码中来自何处?页面加载中的msg_arr
的定义在何处?有趣的是,它在初始if语句中没有红线,而msg_arr
在第二段代码中来自何处?页面加载中的msg_arr
的定义在何处?有趣的是,它不是但在初始if语句中用红线标出