【问题标题】:Data binding issue on dropdownlist下拉列表上的数据绑定问题
【发布时间】:2012-07-25 16:14:42
【问题描述】:

我的页面在从 Visual Studio 运行并安装在我的机器上时运行良好。但是,一旦我将它安装到我们的服务器上,该页面最初会正常加载,但是当单击该按钮时,它只会返回“找不到 URL”错误。

我已将问题追溯到下拉列表的数据绑定。如果我删除它,该页面在服务器上可以正常工作。

任何关于在服务器或我的代码中查看内容的建议将不胜感激。

我的aspx

<%@ Page Title="" Language="C#" MasterPageFile="~/Site.Master" AutoEventWireup="true" CodeBehind="SearchLandmarks.aspx.cs" Inherits="TripRequestPortal.SearchLandmarks" %>
<asp:Content ID="Content1" ContentPlaceHolderID="HeadContent" runat="server">
</asp:Content>
<asp:Content ID="Content2" ContentPlaceHolderID="MainContent" runat="server">

    <div>
        <ajaxToolkit:ToolkitScriptManager ID="ToolkitScriptManagerSearchLandmarks" runat="server" />
        <asp:Label ID="lblCustomerNumber" runat="server" Visible="false" />
    </div>

    <div>
        <asp:CheckBox ID="chkBoxDateFrom" runat="server" />
        <asp:Label ID="lblDateFrom" runat="server" Text="Date From: " />
        <asp:TextBox ID="txtDateFrom" runat="server" />
        <asp:Image ID="imageDateFrom" runat="server" ImageUrl="~/Images/calendar_icon.jpg" />
        <ajaxToolkit:CalendarExtender ID="calendarExtenderDateFrom" runat="server" TargetControlID="txtDateFrom" Format="MM/dd/yyyy" PopupButtonID="imageDateFrom" />
        <ajaxToolkit:MaskedEditExtender ID="MaskedEditExtenderDateFrom" runat="server" TargetControlID="txtDateFrom" Mask="99/99/9999" MaskType="Date"/>
        <ajaxToolkit:MaskedEditValidator ID="MaskedEditValidatorDateFrom" runat="server" ControlToValidate="txtDateFrom" ControlExtender="MaskedEditExtenderDateFrom" IsValidEmpty="true" InvalidValueMessage="Inputted date not valid." EmptyValueMessage="Check box is checked so a date is required." />
    </div>

    <div>
        <asp:CheckBox ID="chkBoxOrigin" runat="server" />
        <asp:Label ID="lblOrigin" runat="server" Text="Label" />
        <asp:DropDownList ID="listOrigins" runat="server" DataSourceID="SqlDataSource1" 
            DataTextField="LANDMARKNAME" DataValueField="PRIKEY"  />
    </div>

    <div>
        <asp:Button ID="btnSearch" runat="server" Text="Search" 
            onclick="btnSearch_Click" />
    </div>

    <div>
        <asp:GridView ID="GridView1" runat="server">
        </asp:GridView>
        <asp:SqlDataSource ID="SqlDataSource1" runat="server" 
            ConnectionString="<%$ ConnectionStrings:ConnectionStringTripStatus %>" 
            FilterExpression="customer='{0}'" 
            ProviderName="<%$ ConnectionStrings:ConnectionStringTripStatus.ProviderName %>" 
            SelectCommand="SELECT PRIKEY, CUSTOMER, CONCAT(CONCAT(LANDMARKNAME, ' | '), SITEID) AS LANDMARKNAME FROM LANDMARKS ORDER BY LANDMARKNAME">
            <FilterParameters>
                <asp:ControlParameter ControlID="lblCustomerNumber" DefaultValue="-1" 
                    Name="newparameter" PropertyName="Text" />
            </FilterParameters>
        </asp:SqlDataSource>
    </div>

</asp:Content>

我的代码在后面

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

namespace TripRequestPortal
{
    public partial class SearchLandmarks : System.Web.UI.Page
    {
        protected void Page_Load(object sender, EventArgs e)
        {
            lblCustomerNumber.Text = "5";
        }

        protected void btnSearch_Click(object sender, EventArgs e)
        {
            Response.Redirect("TripEntry.aspx");
        }
    }
}

谢谢

【问题讨论】:

  • 您是否尝试过使用localhost 在服务器本身上运行该页面,以便看到错误消息? (或者在配置文件中关闭remoteErrors)。 TripEntry.aspx 文件是否也会发布到服务器?
  • “TripEntry.aspx”页面在您的文件结构中的什么位置?我的猜测是,重定向找不到该页面,您将需要 Response.Redirect("~/TripRequestPortal/TripEntry.aspx");或 Response.Redirect("~/TripEntry.aspx");让我们知道这是否有效

标签: c# asp.net data-binding drop-down-menu


【解决方案1】:

我已将问题追溯到下拉列表的数据绑定 列表。如果我删除它,该页面在服务器上可以正常工作。

所以Response.Redirect("TripEntry.aspx");应该没有问题

试试

if (!Page.IsPostBack)
{
    lblCustomerNumber.Text = "5";
}

【讨论】:

  • 重定向没有问题。我试过使用 !IsPostBack 没有任何成功。按钮单击后没有调用 Page_Load。
  • 该死,在我准备好之前发表的评论。我们的一位供应商已经开始研究这个问题。他在同一台服务器上创建了一个新站点,并在其下安装了应用程序。该版本可以正常工作。我创建的网站和他创建的网站有些不同。
【解决方案2】:

我们的供应商发现这与主机标头有关。他在 IIS 中创建了自己的站点并将应用程序安装到其中,并且运行良好。他开始测试我创建的站点,他发现当他删除主机名时它工作正常。如果他将主机名添加到他创建的站点,它就会停止工作。

我们现在正在调查防火墙和 DNS。

进一步扩展...

这是一个防火墙问题。尺寸限制太小。调整好这些后,它就开始工作了。

【讨论】:

    猜你喜欢
    • 2023-03-13
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多