页面加载多次

时间:2016-01-15 15:08:23

标签: c# asp.net .net master-pages pageload

我正在构建的应用程序遇到异常问题,所以我要做的是用户可以查看他们创建的广告的预览,点击广告,这是一个动态链接,并且带到一个新页面,将更详细地显示广告。然后运行更多详细信息页面以检查查询字符串,将查询sting的参数传递给从数据库中提取正确详细信息的方法。这部分工作正常,但是当返回对象时,页面再次加载,调用相同的方法3次,但是使用null参数返回对不存在的对象的空引用。

我尝试重构代码,因此当页面加载时,除非搜索参数有效,否则不会从数据库中检索。当页面加载时,组件将无法工作,例如Image Carousel。

我已经尝试将参数硬编码到方法中,将完美地工作。只会加载一次。

我创建了两个新页面,它们不从主页面继承并使用完全相同的方法。工作得很好。我在两个不同的页面上尝试了这个方法,这些页面是从母版页继承的,同样的问题。

详细的Page.aspx

<%@ Page Title=""  Language="C#" MasterPageFile="~/MasterPage.Master" AutoEventWireup="true" CodeFile="DetailAdvert.aspx.cs" Inherits="Lenders.ie.DetailAdvert" %>
<asp:Content ID="Content1" ContentPlaceHolderID="ContentPlaceHolder1" runat="server">
    <div class="col-lg-9">
    <div class="container">
        <div class="row">


            <!--Advert Image -->
            <div class="container">
                <div class="row">



                    <!-- Carosel goes here -->
                    <div class="row carousel-holder">         

                       <div class="col-xs-12 col-sm-12 col-md-12 col-lg-10">
                                <div id="carousel-example-generic" class="carousel slide" data-ride="carousel">
                                    <ol class="carousel-indicators">
                                        <li data-target="#carousel-example-generic" data-slide-to="0" class="active"></li>
                                        <li data-target="#carousel-example-generic" data-slide-to="1"></li>
                                        <li data-target="#carousel-example-generic" data-slide-to="2"></li>
                                    </ol>
                                    <div class="carousel-inner">
                                        <div class="item active">
                                            <img class="slide-image" id="Img1" runat="server" src="http://placehold.it/800x380" alt=""/>
                                        </div>
                                        <div class="item">
                                            <img class="slide-image" id="Img2" runat="server" src="http://placehold.it/800x380" alt=""/>
                                        </div>
                                        <div class="item">
                                            <img class="slide-image" id="Img3" runat="server" src="http://placehold.it/800x380" alt=""/>
                                        </div>
                                    </div>
                                    <a class="left carousel-control" href="#carousel-example-generic" data-slide="prev">
                                        <span class="glyphicon glyphicon-chevron-left"></span>
                                    </a>
                                    <a class="right carousel-control"  href="#carousel-example-generic" data-slide="next">
                                        <span class="glyphicon glyphicon-chevron-right"></span>
                                    </a>
                                </div>
                            </div>

                    </div>
                </div>
            </div>

            <!--User Details-->
            <br />

            <div class="container">

                <div class="row">

                    <!-- Descriptin and profile view -->


                                    <div class="col-xs-12 col-sm-6 col-md-6 col-lg-5">
                                <div class="well well-sm">
                                    <div class="row">



                                        <div class="col-xs-6 col-sm-6 col-md-6 col-lg-6">
                                            <img src="" runat="server" id="imgProfilePic" alt="" class="img-rounded img-responsive" />
                                        </div>
                                        <div class="col-xs-4 col-sm-4 col-md-4 col-lg-4">
                                            <h4>

                                            <asp:Label ID="lblFristName" runat="server" Text=""></asp:Label>
                                            <asp:Label ID="lblSecondName" runat="server" Text=""></asp:Label>

                                            </h4>

                                            <small><cite title="Location"><asp:Label ID="lblLocation" runat="server" Text=""></asp:Label> <i class="glyphicon glyphicon-map-marker">
                                            </i></cite></small>
                                            <p>
                                                <i title="Email" class="glyphicon glyphicon-envelope"></i> <asp:Label ID="lblEmail" runat="server" Text=""></asp:Label>
                                                <br />

                                                <i title="Join Date" class="glyphicon glyphicon-user"></i> <asp:Label ID="lblJoinDate" runat="server" Text=""></asp:Label><br />

                                                <i title="User Rating" class="glyphicon glyphicon-stats"> </i><asp:Label ID="lblUserRating" runat="server" Text=""></asp:Label><br />

                                                <i title="Contact Number" class="glyphicon glyphicon-phone"> </i><asp:Label ID="lblContactNumber" runat="server" Text=""></asp:Label>

                                            </p>

                                            <!-- Split button -->

                                            <asp:Button ID="btnMessage" runat="server" Text="Message" CssClass="btn btn-success" />



                                        </div>
                                    </div>
                                </div>
                            </div>

                                <!-- Description / Product Details--> 
                            <div class="col-xs-12 col-sm-6 col-md-6 col-lg-5">
                                <div class="well well-sm">
                                    <h4> Description: </h4>
                                    <p>
                                        <asp:Label ID="lblDesc" runat="server" Text=""></asp:Label>
                                    </p>

                                </div>
                            </div>



                </div>
            </div>

            <div class="container">
                <div class="row">

                    <!-- Comment Section -->

                    <div class="col-xs-12 col-sm-12 col-md-12 col-lg-10">
                        <div class="well well-sm">
                            <h4>Comments</h4>
                        </div>


                    </div>

                </div>
            </div>



        </div>

    </div>

</div> 



</asp:Content>
<asp:Content ID="Content2" ContentPlaceHolderID="ContentPlaceHolder2" runat="server">
</asp:Content>

详细的Aspx.cs

using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Web.UI;
using System.Web.UI.WebControls;
using BLL;
using DataModels;


namespace Lenders.ie
{
    public partial class DetailAdvert : System.Web.UI.Page
    {
        public Advert_User ReturnedUserAdvet = new Advert_User();
        public BalAdvertManger BALMan = new BalAdvertManger();

        protected void Page_Load(object sender, EventArgs e)
        {
            //Response.Cache.SetCacheability(HttpCacheability.NoCache);
            //Response.ExpiresAbsolute = DateTime.Now.AddMonths(-1);

            //GetData();
            //PopulatePage();

            //int UserID = Convert.ToInt32(Request.QueryString["UiD"]);
            //int AdvertID = Convert.ToInt32(Request.QueryString["AdID"]);

            if (!Page.IsPostBack)
            {
                GetData();          
            }



        }

        public void GetData()
        {
            //int UserID = 41;
            //int AdvertID = 2;

            int UserID = Convert.ToInt16(Request.QueryString["UiD"]);
            int AdvertID = Convert.ToInt16(Request.QueryString["AdID"]);

            if (UserID != 0 || AdvertID != 0)
            {
                ReturnedUserAdvet = BALMan.ReturnDetailedAdvert(UserID, AdvertID);
                PopulatePage();
            }

            //int UserID = Convert.ToInt32(Request.QueryString["UiD"]);
            //int AdvertID = Convert.ToInt32(Request.QueryString["AdID"]);

            //int UserID = 41;
            //int AdvertID = 2;

            //ReturnedUserAdvet = BALMan.ReturnDetailedAdvert(UserID,AdvertID);


        }

        public void PopulatePage()
        {

        }


    }
}

这是链接所在的位置并指向详细页面。

个人资料Page.aspx

<%@ Page Title="" Language="C#" EnableEventValidation="false" MasterPageFile="~/MasterPage.Master" AutoEventWireup="true" CodeBehind="ProfilePage.aspx.cs" Inherits="Lenders.ie.ProfilePage1" %>
<asp:Content ID="Content1" ContentPlaceHolderID="ContentPlaceHolder1" runat="server">

 <div class="container">
    <div class="row">


      <%-- Adverts View--%>

                    <asp:View ID="AdvertsView" runat="server">

                       <h2>Adverts</h2>

                    </asp:View>

       <%-- View Adverts --%>               

                    <asp:View ID="View_ViewAdverts" runat="server">

                        <h2>View Adverts</h2>

                        <div class="row">

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

                            <asp:LinkButton ID="LinkButton1" OnClick="LinkButton1_Click" runat="server">LinkButton</asp:LinkButton>

                        </div>


                      </asp:View>

<%--There was three closing divs here--%>


                    <asp:View ID="MessageView" runat="server">

                        <h2>Messages</h2>

                    </asp:View>


                </asp:MultiView>

              </div>

            </div>
         </div>

</asp:Content>
<asp:Content ID="Content2" ContentPlaceHolderID="ContentPlaceHolder2" runat="server">

ProfilePage aspx.cs - 创建链接的方法

public void DisplayUserAdverts()
{
    int UserID = Convert.ToInt32(Session["UserID"]);
    int i = 0;

    ListOfUserAdverts = BalAdvertManager.ReturnUserAdvert(UserID);



    StringWriter stringWriter = new StringWriter();

    using (HtmlTextWriter writer = new HtmlTextWriter(stringWriter))
    {
        foreach (Advert item in ListOfUserAdverts)
        {

            string ColDiv = "col-sm-4 col-lg-4 col-md-4";
            string ThumbClass = "thumbnail";
            string Image = "AdvertThumbnails/" + item.Img1.ToString();
            string Caption = "caption";
            string Link = "DetailAdvert.aspx/?AdID=" + item.AdvertID.ToString() + "&UiD=" + item.UserID.ToString();
            Button btn = new Button();

            writer.AddAttribute(HtmlTextWriterAttribute.Class, ColDiv);
            writer.RenderBeginTag(HtmlTextWriterTag.Div);

            writer.AddAttribute(HtmlTextWriterAttribute.Class, ThumbClass);
            writer.RenderBeginTag(HtmlTextWriterTag.Div);

            //writer.AddAttribute(HtmlTextWriterAttribute.Src, Image);     

            writer.AddAttribute(HtmlTextWriterAttribute.Href, Link);
            writer.RenderBeginTag(HtmlTextWriterTag.A);

            writer.AddAttribute(HtmlTextWriterAttribute.Src, Image);
            writer.RenderBeginTag(HtmlTextWriterTag.Img);

            writer.RenderEndTag();

            writer.RenderEndTag();

            writer.AddAttribute(HtmlTextWriterAttribute.Class, Caption);
            writer.RenderBeginTag(HtmlTextWriterTag.Div);

            //writer.AddAttribute(HtmlTextWriterAttribute.Src, Image);

            //writer.RenderBeginTag(HtmlTextWriterTag.Div);
            //writer.AddAttribute(HtmlTextWriterAttribute.Class, Caption);


            writer.RenderBeginTag("h4");

            writer.Write(item.Title.ToString());

            writer.RenderEndTag();

            writer.RenderBeginTag("p");

            //Does Something

            writer.Write(item.Desc.ToString().Substring(0, 50));



            writer.Write("</br>");

            writer.Write("Testing" + i.ToString());

            writer.Write("</br>");

            this.Controls.Add(btn);

            writer.AddAttribute(HtmlTextWriterAttribute.Href, Link);
            //  writer.AddAttribute(HtmlTextWriterAttribute.Id);
            writer.RenderBeginTag(HtmlTextWriterTag.A);
            writer.Write("Link");
            writer.RenderEndTag();

            writer.RenderEndTag();

            //writer.WriteBeginTag("p");

            //       // Does Something

            //writer.WriteEndTag("p");

            writer.RenderEndTag();

            writer.RenderEndTag();

            writer.RenderEndTag();

            i++;

        }
    }

    Advert1.Text = stringWriter.ToString();


}

Master Page.aspx

<%@ Master  Language="C#" AutoEventWireup="true"  CodeBehind="MasterPage.master.cs" Inherits="Lenders.ie.MasterPage" %>

<!DOCTYPE html>

<html xmlns="http://www.w3.org/1999/xhtml">
<head runat="server">

    <meta charset="utf-8">
    <meta http-equiv="X-UA-Compatible" content="IE=edge">
    <meta name="viewport" content="width=device-width, initial-scale=1">
    <meta name="description" content="">
    <meta name="author" content="">

    <title>Shop Homepage - Start Bootstrap Template</title>

    <!-- Bootstrap Core Content -->
    <link href="Content/bootstrap.min.css" rel="stylesheet">

    <!-- Custom CSS -->
    <link href="Content/shop-homepage.css" rel="stylesheet">

    <!-- HTML5 Shim and Respond.js IE8 support of HTML5 elements and media queries -->
    <!-- WARNING: Respond.js doesn't work if you view the page via file:// -->
    <!--[if lt IE 9]>
        <script src="https://oss.maxcdn.com/libs/html5shiv/3.7.0/html5shiv.js"></script>
        <script src="https://oss.maxcdn.com/libs/respond.js/1.4.2/respond.min.js"></script>
    <![endif]-->

</head>
<body>
    <form id="form1" runat="server">
        <!-- Navigation -->
    <nav class="navbar navbar-inverse navbar-fixed-top" role="navigation">
        <div class="container">
            <!-- Brand and toggle get grouped for better mobile display -->
            <div class="navbar-header">

                <button type="button" class="navbar-toggle" data-toggle="collapse" data-target="#bs-example-navbar-collapse-1"> 
                    <span class="sr-only">Toggle navigation</span>
                    <span class="icon-bar"></span>
                    <span class="icon-bar"></span>
                    <span class="icon-bar"></span>
                </button> 
               <%-- <a class="navbar-brand" href="www.google.com">
            </a>--%>
            </div>
            <!-- Collect the nav links, forms, and other content for toggling -->
            <div class="collapse navbar-collapse" id="bs-example-navbar-collapse-1">
                <ul class="nav navbar-nav">
                    <li>
                       <asp:HyperLink ID="Home" runat="server">Home</asp:HyperLink>
                    </li>
                    <li>
                        <asp:HyperLink ID="Services" runat="server">Services</asp:HyperLink>
                    </li>
                    <li>
                        <asp:HyperLink ID="Contact" runat="server">Contact</asp:HyperLink>
                    </li>
                      <li>
                        <asp:HyperLink ID="Login" runat="server">Log In</asp:HyperLink>
                    </li>


                </ul>
                <div class="navbar-form navbar-right">

                    <div class="input-group input-sm">

                        <asp:TextBox ID="txtSearch" runat="server" CssClass="form-control form-control-sm " AutoPostBack="true"></asp:TextBox>

                    <span class="
                    </span>

                    </div>

                </div>
            </div>
            <!-- /.navbar-collapse -->
        </div>
        <!-- /.container -->
    </nav>

         <div class="container">

        <div class="row">

            <div class="col-md-3">
                <p class="lead">Shop Name</p>
                <div class="list-group">
                    <asp:HyperLink ID="HyperLink1" CssClass="list-group-item"  runat="server">Sports</asp:HyperLink>
                    <asp:HyperLink ID="HyperLink2" CssClass="list-group-item"  runat="server">Hobbies</asp:HyperLink>
                    <asp:HyperLink ID="HyperLink3" CssClass="list-group-item"  runat="server">Life Style</asp:HyperLink>
                    <asp:HyperLink ID="HyperLink4" CssClass="list-group-item"  runat="server">Another Example</asp:HyperLink>
                    <asp:HyperLink ID="HyperLink5" CssClass="list-group-item"  runat="server"> Blah </asp:HyperLink>
                </div>
            </div> 

<%--            <div class="col-md-9">

                <div class="row carousel-holder">

                    <div class="col-md-12">--%>


        <asp:ContentPlaceHolder ID="ContentPlaceHolder1" runat="server">



        </asp:ContentPlaceHolder>

        <asp:ContentPlaceHolder ID="ContentPlaceHolder2" runat="server">

        </asp:ContentPlaceHolder>

                        </div>
                         </div>


              <%--      </div>

                </div>

             </div>--%>

             <div class="container">

        <hr>

        <!-- Footer -->
        <footer>
            <div class="row">
                <div class="col-lg-12">
                    <p>Copyright &copy; Your Website 2014</p>
                </div>
            </div>
        </footer>

    </div>
    <!-- /.container -->

    <!-- jQuery -->
    <script src="js/jquery.js"></script>

    <!-- Bootstrap Core JavaScript -->
    <script src="js/bootstrap.min.js"></script>enter code here
    </form>
</body>
</html>

Master Page.aspx.cs

using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Web.UI;
using System.Web.UI.WebControls;

namespace Lenders.ie
{
    public partial class MasterPage : System.Web.UI.MasterPage
    {
        protected void Page_Load(object sender, EventArgs e)
        {

        }
    }
}

0 个答案:

没有答案