ASPX -为什么调用无参数构造函数,跳过参数化构造函数

本文关键字:构造函数 参数 调用 ASPX 为什么 | 更新日期: 2023-09-27 18:05:35

这是浏览器的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}值。

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

ASPX -为什么调用无参数构造函数,跳过参数化构造函数

这是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"]);
}