无法计算表达式,因为在 ASP.NET 中打印页面时对代码进行了优化
Posted
技术标签:
【中文标题】无法计算表达式,因为在 ASP.NET 中打印页面时对代码进行了优化【英文标题】:Unable to evaluate expression because the code is optimized while printing a page in ASP.NET 【发布时间】:2020-01-22 01:25:21 【问题描述】:打印页面时出现“无法评估表达式,因为代码已优化”异常。
对于打印,我使用字符串生成器附加 html 组件,然后将其放入 Literal,然后将其分配给 Session["ctrl"]。我使用页面名称Print.aspx
和辅助函数PrintHelper
。
private void PrintApplication(StudentDetails StudentData )
List<StudentAttDetails> itemAtt = new List<StudentAttDetails>();
List<StudentAcadDetails> itemAcad = new List<StudentAcadDetails>();
itemAtt = StudentData.AttDetails;
itemAcad = StudentData.AccDetails;
try
StringBuilder sb = new StringBuilder();
sb.Append("<div class=' peopledetails-piims'>");
sb.Append("<table class='blueTable'>");
sb.Append("<tr>");
sb.Append("<td colspan='2' style='font-size:1em;font-weight:bold;text-align-left;'>स्कूल की जानकारी, स्थिति व जगह</td><td colspan='2' style='font-size:1.2em;font-weight:bold;text-align-right;'>आवेदन क्रमांक:" + "</td>");
sb.Append("</tr>");
sb.Append("<tr>");
sb.Append("<td>यूडाइस कोड:</td><td>" + StudentData.UdiseCode + "</td><td>सत्र:</td><td>" + StudentData.Session + "</td>");
sb.Append("</tr>");
sb.Append("<tr>");
sb.Append("<td>कक्षा: </td><td>" + StudentData.Class + "</td><td>मधायम:</td><td>" + StudentData.Medium + "</td>");
sb.Append("</tr>");
sb.Append("<tr>");
sb.Append("<td>आवेदन क्रमांक: </td><td>" + StudentData.ApplicationId + "</td><td>विध्यार्थी का नाम:</td><td>" + StudentData.StudentName + "</td>");
sb.Append("</tr>");
sb.Append("<tr>");
sb.Append("<td>जाति </td><td>:</td><td>" + StudentData.Caste + "</td><td>जन्मतिथि </td><td>:</td><td>" + StudentData.DOB + "</td>");
sb.Append("</tr>");
sb.Append("<tr>");
sb.Append("<td>अभिभावक का नाम </td><td>:</td><td>" + StudentData.ParentsName + "</td><td>घर का पता </td><td>:</td><td>" + StudentData.Address + "</td>");
sb.Append("</tr>");
sb.Append("<tr>");
sb.Append("<td>दाखिले का वर्ष </td><td>:</td><td>" + StudentData.YearOfJoin + "</td>");
sb.Append("</tr>");
sb.Append("</table>");
//sb.Append("</br>");
//sb.Append("</br>");
sb.Append("<table class='blueTable'>");
sb.Append("<thead>");
sb.Append("<tr>");
sb.Append("<td colspan='3' style='font-size:1em;font-weight:bold;text-align: center;'>उपस्थिति की जानकारी</td>");
sb.Append("</tr>");
sb.Append("</thead>");
sb.Append("<thead>");
sb.Append("<tr>");
sb.Append("<th>SNo</th><th>वर्ष</th><th>बच्चे की उपस्थिति</th>");
sb.Append("</tr>");
sb.Append("</thead>");
sb.Append("<tbody>");
int snPreferences = 1;
foreach (StudentAttDetails sad in itemAtt)
sb.Append("<tr>");
sb.Append("<td>" + snPreferences.ToString() + "</td><td>" + (sad.Year).ToString() + "</td><td>" + sad.Attendance + "</td>");
sb.Append("</tr>");
snPreferences += 1;
sb.Append("</tbody>");
sb.Append("</table>");
//sb.Append("</br>");
//sb.Append("</br>");
sb.Append("<table class='blueTable'>");
sb.Append("<thead>");
sb.Append("<tr>");
sb.Append("<td colspan='3' style='font-size:1em;font-weight:bold;text-align: center;'>विवरण की जानकारी</td>");
sb.Append("</tr>");
sb.Append("</thead>");
sb.Append("<thead>");
sb.Append("<tr>");
sb.Append("<th>SNo</th><th>वर्ष</th><th>ग्रेड</th><th>कुल बच्चो की संख्या</th><th>कक्षा मे प्राप्त श्रेणी</th>");
sb.Append("</tr>");
sb.Append("</thead>");
sb.Append("<tbody>");
int sno = 1;
foreach (StudentAcadDetails sacd in itemAcad)
sb.Append("<tr>");
sb.Append("<td>" + sno.ToString() + "</td><td>" + (sacd.Year).ToString() + "</td><td>" + sacd.Grade.ToString() + "</td><td>" + (sacd.TotalStudent).ToString() + "</td><td>" + (sacd.Rank).ToString() + "</td><td>");
sb.Append("</tr>");
sno += 1;
sb.Append("</tbody>");
sb.Append("</table>");
sb.Append("</div>");
ltlPrint.Text = "";
ltlPrint.Text = sb.ToString();
Session["ctrl"] = null;
#region Print Application
Session["ctrl"] = ltlPrint;
ClientScript.RegisterStartupScript(typeof(Page), "onclick", "<script language=javascript>window.open('../Print.aspx','PrintMe','height=700px,width=700px,scrollbars=1');</script>");
#endregion
catch (Exception ex)
打印.aspx
protected void Page_Load(object sender, EventArgs e)
try
Control ctrl = (Control)Session["ctrl"];
PrintHelper.PrintWebControlStudentApp(ctrl);
catch(Exception ex)
我在Print.aspx
页面上遇到错误,catch() 抛出异常:
由于代码已优化,无法计算表达式
【问题讨论】:
【参考方案1】:检查 Page.aspx 页面,由于您的系统对母版页的某些依赖性,该线程被中止。 谢谢
【讨论】:
【参考方案2】:您使用调试构建吗?或者是发布版本,而不是肯定的代码是优化的。
【讨论】:
我不明白。你想说重建/构建解决方案而不是调试吗?【参考方案3】:ClientScript.RegisterStartupScript(typeof(Page), "onclick", "<script language=javascript>window.open('../Print.aspx','PrintMe','height=700px,width=700px,scrollbars=1');</script>");
您的错误---无法计算表达式,因为代码是 优化
注意:- 我认为...您收到错误只是因为页面没有以正确的方式重定向...在目的地
string url="";// In this Line you have to add url in proper way ...so you can easliy redirect
string dim = "toolbar=0,fullscreen=1,location=0,directories=0,status=0,menubar=0,scrollbars=0,resizable=0,maximize=0,height=1000px";
ScriptManager.RegisterStartupScript(this.Page, this.GetType(), Guid.NewGuid().ToString().Trim(), "window.open('" + url + "', 'Popup', '" + dim + "');", true);
【讨论】:
我尝试了你上面提到的方法,但得到了同样的错误。以上是关于无法计算表达式,因为在 ASP.NET 中打印页面时对代码进行了优化的主要内容,如果未能解决你的问题,请参考以下文章