【问题标题】:LoadControl usercontrol with list <of strings>带有列表 <字符串> 的 LoadControl 用户控件
【发布时间】:2015-06-08 16:43:48
【问题描述】:

我需要将我从 AD 查询生成的字符串列表加载到 Web 用户控件中,但它不起作用。当我点击查看按钮时,页面被刷新,没有别的。这是我的代码:

默认.aspx

if (e.CommandName == "View")
{
    WindowsIdentity wi = new WindowsIdentity(item);
    foreach (IdentityReference group in wi.Groups)
    {
        try
        {
            result1.Add(group.Translate(typeof(NTAccount)).ToString());
      result1.Sort();
        }
        catch (Exception ex)
        { }

     }
     View f2 = new View(result1);
Session["newResult"] = result1;
     Page.LoadControl("~/View.ascx");
 }
 public List<string> NewResult
    {
        get
        {
            if (Session["NewResult"] == null)
            {
                Session["NewResult"] = new List<string>();
            }
            return (List<string>)Session["NewResult"];
        }
        set { Session["NewResult"] = value; }
    }

用户控件视图.ascx

Namespace Rap.Web
{
    public partial class View : System.Web.UI.UserControl
    {
        public View()
        {}


        public View(List<string> NewresultFromQuery)
        {
             NewresultFromQuery  = (List<string>)Session["newResult"];//NullReference error

        }

        protected void Page_Load(object sender, EventArgs e)
        { 
            //create tabs from List<strings>
        }
    }
}

View.ascx

<%@ Control Language="C#" AutoEventWireup="true" CodeBehind="View.ascx.cs" Inherits="Rap.Web.View" %>
<ajax:ToolkitScriptManager ID="ToolkitScriptManager1" runat="server"
</ajax:ToolkitScriptManager>
<ajax:TabContainer ID="TabContainer1" runat="server" ActiveTabIndex="1" 
Width="1016px">

</ajax:TabContainer>
MyUserApp.aspx
<%@ Page Language="C#" AutoEventWireup="true" CodeBehind="MyUserApp.aspx.cs" Inherits="Rap.Web.MyUserApp" %>
<%@ Register Assembly="AjaxControlToolkit" Namespace="AjaxControlToolkit" TagPrefix="ajax" %>
<%@ Reference Control="View.ascx" %>

【问题讨论】:

  • 你可以试试调试

标签: c# asp.net


【解决方案1】:

如果您希望数据在回发之间保持不变,则需要将列表存储在会话中。

因此,无论何时您在列表中添加或删除数据,都可以从会话 NewresultsFromQuery = (List&lt;string&gt;)Session["newResult"]; 中获取当前列表

然后,当您更新 NewresultsFromQuery 后,将其放回会话中

Session["newResult"] = NewresultsFromQuery

【讨论】:

  • 请检查代码更改,现在我在 NewresultsFromQuery = (List)Session["newResult"]; 下出现 NullReference 错误
  • 您正试图在会话中有值之前访问它。如果您在访问之前不确定会话中是否有值,那么进行空检查总是好的。 if (Session["newResult"] != null) { //做事}
  • 现在我的代码工作得很好,我可以看到会话保留了我的列表,但用户控件没有加载!任何的想法 ?赞赏
  • 您必须将用户控件添加到实际页面。检查以下链接:stackoverflow.com/questions/2275625/…
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2010-12-10
  • 2011-08-22
  • 1970-01-01
  • 2018-09-07
  • 2017-03-09
  • 2013-10-21
  • 2014-01-06
相关资源
最近更新 更多