这是浏览器的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时它进入无参数构造函数,并且从不调用参数构造函数。
这导致_saliesID
具有{00000000-0000-0000-0000-000000000000}
值。
为什么无参数构造函数是通过参数化构造函数调用的?
答案 0 :(得分:2)
这就是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"]);
}