C# 响应。在Try/Catch块内重定向
在Asp.NET Web应用程序中尝试将字符串转换为枚举时 代码-C# 响应。在Try/Catch块内重定向,c#,asp.net,C#,Asp.net,在Asp.NET Web应用程序中尝试将字符串转换为枚举时 代码- enum MyEnum { field1, field2, field3 } string strField1 = "field1"; MyEnum parsedEnum = (MyEnum)Enum.Parse(typeof(MyEnum), strField1); 我遇到以下错误- 无法计算表达式,因为代码已优化或 本机框架位于调用堆栈的顶部 我错过了什么 编辑:更新代码: 我一直在使用这个枚举通
enum MyEnum
{
field1,
field2,
field3
}
string strField1 = "field1";
MyEnum parsedEnum = (MyEnum)Enum.Parse(typeof(MyEnum), strField1);
我遇到以下错误-
无法计算表达式,因为代码已优化或
本机框架位于调用堆栈的顶部
我错过了什么
编辑:更新代码:
我一直在使用这个枚举通过验证按钮的CommandArgument将用户重定向到其他页面。我在调试解决方案时出现此错误,从其他方面看,代码工作正常
<form id="form1" runat="server">
<div>
<asp:Button Text="Redirect" ID="btnRedirect" OnClick="btnRedirect_Click" CommandName="field1" runat="server" />
</div>
</form>
protected void btnRedirect_Click(object sender, EventArgs e)
{
var btn = sender as Button;
var cmdName = btn.CommandName; //field1
MyEnum parsedEnum = (MyEnum)Enum.Parse(typeof(MyEnum), cmdName);
try
{
switch (parsedEnum)
{
case MyEnum.field1:
Response.Redirect("WebForm1.aspx");
break;
case MyEnum.field2:
Response.Redirect("WebForm2.aspx");
break;
case MyEnum.field3:
Response.Redirect("WebForm3.aspx");
break;
default:
break;
}
}
catch (Exception ex)
{
var err = ex.Message;
}
}
受保护的无效BTN直接单击(对象发送者,事件参数e)
{
var btn=发送方作为按钮;
var cmdName=btn.CommandName;//字段1
MyEnum parsedEnum=(MyEnum)Enum.Parse(typeof(MyEnum),cmdName);
尝试
{
交换机(parsedEnum)
{
案例MyEnum.field1:
重定向(“WebForm1.aspx”);
打破
案例MyEnum.field2:
重定向(“WebForm2.aspx”);
打破
案例MyEnum.field3:
重定向(“WebForm3.aspx”);
打破
违约:
打破
}
}
捕获(例外情况除外)
{
var err=例如消息;
}
}
对该错误消息的所有引用都指向在请求中添加第二个false
参数。重定向
。enum
代码是否重定向用户?对该错误消息的所有引用都指向向请求.重定向添加第二个false
参数。enum
代码是否重定向用户?问题在于试图重定向到try catch
块内的其他页面
无法计算表达式,因为代码已优化或
本机框架位于调用堆栈的顶部
上述异常已在catch块内导致,当前页面线程被中止。
问题在于试图重定向到try catch
块内的其他页面
无法计算表达式,因为代码已优化或
本机框架位于调用堆栈的顶部
上面的异常是由catch块内的当前页面线程被中止引起的。
取出(MyEnum)-您已经告诉它要解析的类型,因为什么时候会遇到该错误?我怀疑您没有从运行的代码中得到错误;这是您在尝试检查某些内容时通常在调试器中看到的错误。代码是正确的。我执行了successfully@Darren,这不是真的,此方法返回一个“object”,因此在解析后应强制转换为实际的枚举类型。问题中的代码是正确的。如果你想的话,有一个Enum.TryParse是泛型的。@autrevo:到底发生了什么事?您的代码本身没有抛出此错误-您的代码正在工作。但似乎您正在尝试调试该值—可能是在手表或即时窗口中—此时您看到了错误。取出(MyEnum)—您已经告诉它要解析的类型,因为您何时会遇到该错误?我怀疑您没有从运行的代码中得到错误;这是您在尝试检查某些内容时通常在调试器中看到的错误。代码是正确的。我执行了successfully@Darren,这不是真的,此方法返回一个“object”,因此在解析后应强制转换为实际的枚举类型。问题中的代码是正确的。如果你想的话,有一个Enum.TryParse是泛型的。@autrevo:到底发生了什么事?您的代码本身没有抛出此错误-您的代码正在工作。但是,似乎您正在尝试调试该值-可能是在手表或即时窗口中-而这正是您看到错误的时候。是的,我一直在使用MyEnum、内置开关盒和Response.Redirect。因此,将您的响应更改为响应。重定向(url)
为响应。重定向(url,false)
,您应该很好。是的,我一直在使用MyEnum、insided switch case和Response.Redirect。因此,将您的Response.Redirect(url)
更改为Response.Redirect(url,false)
,您应该会做得很好。