Viewstate 有值但 return System.NullReferenceException 回传
Viewstate has value but return System.NullReferenceException on postback
我最近在 post 返回页上遇到了一个新的非常奇怪的 ViewState 异常。
如果页面未 post 返回(第一次加载),我想设置一次 ViewState,然后在下一次 post 返回时再次使用它。
代码在page_Load上定义如下:
if (!string.IsNullOrEmpty(Request.QueryString["id"])){
if (Guid.TryParse(Request.QueryString["id"], out var id)){
ViewState["mesId"] = id;
if (!IsPostBack)
{
LoadData(id);
}
if (IsPostBack)
{
if (Request.Form["btnSend"] != null)
{
if (ViewState["mesId"] != null)
{
string g = ViewState["msgId"].ToString();
if (Xss.GUID_Validate(g))
{
Guid mesGuid = Guid.Parse(ViewState["mesId"].ToString());
Send_Message(mesGuid);
}
}
}
}
}
}
页面加载后没有 post 返回,一切正常,但如果我调用 btnSend
执行 post 返回,ViewState["mesId"] 保持它的值并且是脏的但抛出 null 和 Object reference not set to an instance of an object.
我可以通过使用直接 Request.QueryString
来解决这个错误,但我想知道我的代码有什么问题以及为什么视图状态会这样?
您似乎正在设置和检查 ViewState["mesId"]
,但在加载 ViewState["msgId"]
时崩溃了。
检查密钥是否符合您的预期 - 这可能只是一个拼写错误。
我最近在 post 返回页上遇到了一个新的非常奇怪的 ViewState 异常。
如果页面未 post 返回(第一次加载),我想设置一次 ViewState,然后在下一次 post 返回时再次使用它。
代码在page_Load上定义如下:
if (!string.IsNullOrEmpty(Request.QueryString["id"])){
if (Guid.TryParse(Request.QueryString["id"], out var id)){
ViewState["mesId"] = id;
if (!IsPostBack)
{
LoadData(id);
}
if (IsPostBack)
{
if (Request.Form["btnSend"] != null)
{
if (ViewState["mesId"] != null)
{
string g = ViewState["msgId"].ToString();
if (Xss.GUID_Validate(g))
{
Guid mesGuid = Guid.Parse(ViewState["mesId"].ToString());
Send_Message(mesGuid);
}
}
}
}
}
}
页面加载后没有 post 返回,一切正常,但如果我调用 btnSend
执行 post 返回,ViewState["mesId"] 保持它的值并且是脏的但抛出 null 和 Object reference not set to an instance of an object.
我可以通过使用直接 Request.QueryString
来解决这个错误,但我想知道我的代码有什么问题以及为什么视图状态会这样?
您似乎正在设置和检查 ViewState["mesId"]
,但在加载 ViewState["msgId"]
时崩溃了。
检查密钥是否符合您的预期 - 这可能只是一个拼写错误。