繁体   English   中英

ASPX-为什么调用无参数构造函数,而跳过带参数的构造函数?

[英]ASPX - Why is the parameterless constructor invoked, skipping the parameterized one?

这是浏览器的http请求

http://localhost:59440/CaseCards/Registrai/neigaliuju_registras.aspx?saliesId=5b8c3abc-4eec-4d69-b66a-25c7f27a2187

这是我的带有两个构造函数的代码隐藏文件

public NeigaliujuRegistras()
{

}

public NeigaliujuRegistras(string saliesId)
{
     _saliesId = new Guid(saliesId);
     //more of very secret bla bla
}

以下代码发出请求

oWnd = radopen("CaseCards/Registrai/neigaliuju_registras.aspx?saliesId=" + $("input[name*='hsvSaliesId']").val(), "meow");

如果我在两个构造函数上都设置断点,我会发现在加载时它将进入无参数构造函数,并且永远不会调用带参数的构造函数。

这导致_saliesID值为{00000000-0000-0000-0000-000000000000}

为什么在无参数构造函数上调用无参数构造函数?

这就是ASP .Net框架创建这些实例的方式。

在您的特定情况下,您不需要此构造函数,因为您可以从Request.QueryString对象获取saliesId。 如果您仍想在构造函数中使用它,则可以执行以下操作。

public NeigaliujuRegistras()
{
    // attach a handler to the Init event so to make sure the Request object is available.
    this.Init += (_o, _e) => {
         saliesId = new Guid(Request.QueryString["saliesId"]);
    };
}

或者,您可以遵循将代码放入Page_Load方法中的标准方法。

protected void Page_Load(object sender, EventArgs e)
{
    saliesId = new Guid(Request.QueryString["saliesId"]);
}

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM