Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/node.js/42.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 为什么调用无参数构造函数而跳过参数化构造函数?_C#_Asp.net_Webforms - Fatal编程技术网

C# 为什么调用无参数构造函数而跳过参数化构造函数?

C# 为什么调用无参数构造函数而跳过参数化构造函数?,c#,asp.net,webforms,C#,Asp.net,Webforms,这是浏览器的http请求 http://localhost:59440/CaseCards/Registrai/neigaliuju_registras.aspx?saliesId=5b8c3abc-4eec-4d69-b66a-25c7f27a2187 这是我的代码隐藏文件,有两个构造函数 public NeigaliujuRegistras() { } public NeigaliujuRegistras(string saliesId) { _saliesId = new

这是浏览器的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");
如果我在两个构造函数上都设置断点,我会看到在laoding之后,它进入了无参数构造函数,而带参数的构造函数永远不会被调用

这导致
\u saliesID
具有
{00000000-0000-0000-0000-00000000000000}


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

这就是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"]);
    };
}
或者,您可以按照标准方式将代码放置在页面加载方法中

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

这就是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"]);
    };
}
或者,您可以按照标准方式将代码放置在页面加载方法中

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

谢谢Adrian,我不知道我必须手动解析参数。我认为它的工作方式与ASP.NETMVC相同,框架将解析参数并选择匹配的构造函数。欢迎!ASP.NETMVC都不是这样做的。Net MVC在其他方法(控制器操作)中进行此映射。你可以定义一个构造函数来注入依赖项。谢谢你,Adrian,我不知道我必须手动解析参数。我认为它的工作方式与ASP.NETMVC相同,框架将解析参数并选择匹配的构造函数。欢迎!ASP.NETMVC都不是这样做的。Net MVC在其他方法(控制器操作)中进行此映射。您可以定义一个构造函数,在其中可以注入依赖项。