当我在我的母版页上使用此脚本时,我收到此异常

时间:2015-09-21 09:49:15

标签: javascript c# html asp.net telerik

我在母版页上使用此脚本时出现此异常

<script language="javascript" type="text/javascript">
    function SetSession() {'<%=Session["ShowHjælpBox"] = "Test" %>' };
</script>

当我访问我的某个页面时,我有一个例外,我有一个telerik组件(Autocompletebox),这让我很困惑,请帮助我-.-

Exception:
System.Web.HttpUnhandledException (0x80004005): Der blev udløst en undtagelse af typen 'System.Web.HttpUnhandledException'. ---> System.Web.HttpException (0x80004005): Please, see whether wrapping the code block, generating the exception, within RadCodeBlock resolves the error. ---> System.Web.HttpException (0x80004005): Samlingen Controls kan ikke ændres, for objektet indeholder kodeblokke (dvs. <% ... %>).
   ved System.Web.UI.ControlCollection.Add(Control child)
   ved Telerik.Web.SkinRegistrar.RegisterCssReference(Page page, Type registerType, String url)
   ved Telerik.Web.SkinRegistrar.RegisterCssReference(Page page, Type registerType, String url)
   ved Telerik.Web.SkinRegistrar.RegisterCssReferences(ISkinnableControl control)
   ved Telerik.Web.UI.RadDataBoundControl.RegisterCssReferences()
   ved Telerik.Web.UI.RadDataBoundControl.ControlPreRender()
   ved Telerik.Web.UI.RadAutoCompleteBox.OnPreRender(EventArgs e)
   ved System.Web.UI.Control.PreRenderRecursiveInternal()
   ved System.Web.UI.Control.PreRenderRecursiveInternal()
   ved System.Web.UI.Control.PreRenderRecursiveInternal()
   ved System.Web.UI.Control.PreRenderRecursiveInternal()
   ved System.Web.UI.Control.PreRenderRecursiveInternal()
   ved System.Web.UI.Control.PreRenderRecursiveInternal()
   ved System.Web.UI.Control.PreRenderRecursiveInternal()
   ved System.Web.UI.Control.PreRenderRecursiveInternal()
   ved System.Web.UI.Control.PreRenderRecursiveInternal()
   ved System.Web.UI.Control.PreRenderRecursiveInternal()
   ved System.Web.UI.Page.ProcessRequestMain(Boolean includeStagesBeforeAsyncPoint, Boolean includeStagesAfterAsyncPoint)
   ved System.Web.UI.Page.HandleError(Exception e)
   ved System.Web.UI.Page.ProcessRequestMain(Boolean includeStagesBeforeAsyncPoint, Boolean includeStagesAfterAsyncPoint)
   ved System.Web.UI.Page.ProcessRequest(Boolean includeStagesBeforeAsyncPoint, Boolean includeStagesAfterAsyncPoint)
   ved System.Web.UI.Page.ProcessRequest()
   ved System.Web.UI.Page.ProcessRequestWithNoAssert(HttpContext context)
   ved System.Web.UI.Page.ProcessRequest(HttpContext context)
   ved ASP.tidsbestilling_aspx.ProcessRequest(HttpContext context) i c:\Users\cc\AppData\Local\Temp\Temporary ASP.NET Files\vs\6184c3c9\f93c9d53\App_Web_ix30hemr.0.cs:linje 0
   ved System.Web.HttpApplication.CallHandlerExecutionStep.System.Web.HttpApplication.IExecutionStep.Execute()
   ved System.Web.HttpApplication.ExecuteStep(IExecutionStep step, Boolean& completedSynchronously)

如果有人有另一种方法通过点击按钮添加会话请告诉我,ps我不想要回发它

2 个答案:

答案 0 :(得分:0)

使用:

<script type="text/javascript">
function SetSession()
{
    var userName = "Test";
    '<%Session["ShowHjælpBox"] = "' + userName + '"; %>';         
}
</script>

答案 1 :(得分:0)

我不确定我是否可以正确读取异常,但您是否尝试将服务器代码块包装在RadCodeBlock控件中:

 @Override
public boolean onTouchEvent(MotionEvent event) {
    //Check if event is on your view
    if(event.getY()>view.getTop()&&event.getY()<view.getBottom()&&event.getX()>view.getLeft()&&event.getX()<view.getRight()){
        //event occured inside your view

    }
    //here return super or as your logic prefer
    return super.onTouchEvent(event);
}

在旁注 - 我不确定您要实现的目标,但此代码将在您的页面上呈现以下内容:

<telerik:RadCodeBlock runat="server" ID="RadCodeBlock1">
    <script language="javascript" type="text/javascript">
        function SetSession() {
            '<%=Session["ShowHjælpBox"] = "Test" %>'
        };
    </script>
</telerik:RadCodeBlock>

这不是真正设置SERVER会话变量的JS函数。你根本无法在JS中做到这一点。 JS在浏览器中运行,Session在服务器上。因此,您需要某种形式的回发来了解会话,以便将其设置为用户操作。也许这篇博文会给你一些想法:http://www.telerik.com/blogs/different-ways-to-make-a-request-to-the-server