【问题标题】:Web User Control Causing Page Not FoundWeb 用户控制导致页面未找到
【发布时间】:2015-01-15 21:43:19
【问题描述】:

我遇到了一个非常奇怪的问题。我的一些 Web 用户控件导致引用它的父页面出现 404 page not found 错误。

这是我在 .aspx 页面上注册它的方法:

<%@ Register TagPrefix="uc" TagName="DonationList"
Src="~/Controls/Donation/DonationList.ascx" %>

以及在同一个aspx页面上声明用户控件的那一行:

<uc:DonationList ID="seenDonationListUC" runat="server" SeenInformation="Seen" />

如果我删除上述行,我不会再收到 404 错误页面。

这是一个用户控件类的小sn-p:

public partial class DonationList : System.Web.UI.UserControl
{
    public enum Seen
    {
        Unspecified = 0,
        Seen = 1,
        NotSeen = 2
    }
    public Seen SeenInformation
    {
        get
        {
            int temp = seenInformationHF.Value == "" ? 0 : Convert.ToInt32(seenInformationHF.Value);
            result = (Seen) temp;
            return result;
        }
        .....

你知道这可能的原因吗?

【问题讨论】:

  • 你确定src属性是对的?
  • @Abbath 是的,非常肯定。逐个字母逐个检查。
  • 那么我唯一能想到的就是用户控件发生了一些错误,这可能导致重定向到错误页面。您可以尝试将SeenInformation="Seen" 替换为SeenInformation="0",并将public Seen SeenInformation 的类型替换为int 吗?
  • @Abbath 是的,这解决了问题。谢谢。我在 Page_Load 上放了一个断点以确保它成功,但我认为问题不会出在 SeenInformation 上。现在这很奇怪。它一直工作到现在。 IntelliSense 甚至为我提供了枚举选项。我猜 aspx 页面在运行时找不到枚举的正确引用。
  • 在您的SeenInformation Setter 中,确保将其设置为数字字符串值,因为如果此Convert.ToInt32(seenInformationHF.Value); 无法解析字符串,则会崩溃

标签: c# asp.net webforms webusercontrol


【解决方案1】:

您的枚举名称和后续枚举值都是相同的“Seen”。尝试将枚举名称更改为 SeenOptions 之类的名称。例如,

public enum SeenOptions
{
    Unspecified = 0,
    Seen = 1,
    NotSeen = 2
}

在这种情况下,您的 SeenInformation 类将如下所示,

public SeenOptions SeenInformation
{
    get
    {
        int temp = seenInformationHF.Value == "" ? 0 : Convert.ToInt32(seenInformationHF.Value);
        result = (Seen) temp;
    }
    .....

最后,您在 aspx 页面上的用户控制线将与以前相同。

<uc:DonationList ID="seenDonationListUC" runat="server" SeenInformation="Seen" />

我希望这能解决您的问题。

【讨论】:

  • 嗯,这实际上不是问题。但是将这段旧代码重命名为您的命名约定是一个绝妙的主意。问题是,我实际上在另一个名为 CommonReference 的类中声明了枚举。类似于 public CommonReference.SeenOptions SeenInformation { .. } 但这曾经一直有效。虽然问题以一种方式解决,但无论如何。
猜你喜欢
  • 2019-07-13
  • 1970-01-01
  • 2017-10-21
  • 2014-10-12
  • 1970-01-01
  • 2019-04-22
  • 1970-01-01
  • 2018-01-06
  • 2018-06-07
相关资源
最近更新 更多