[asp.net]当我在我的 masterpage 上使用此脚本,我会此异常

发布时间: 2017/3/26 2:40:00
注意事项: 本文中文内容可能为机器翻译,如要查看英文原文请点击上面连接.

当我在我的 masterpage 上使用此脚本,我会此异常

<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

解决方法 1:

我不确定我能读懂异常正确,但你没有试环绕在 RadCodeBlock 控件中的服务器代码块︰

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

在边注-不知道你正在实现,但此代码将呈现在您的页面上以下︰

        <script language="javascript" type="text/javascript">
            function SetSession() {
                'Test'
            };
        </script>

这不是一个 JS 函数,将设置一个服务器的会话变量。你不能做这 JS 中。JS 运行在浏览器中,本届会议是在服务器上。因此,您需要某种形式的了解会议为了设置对用户操作的回发。也许这篇文章会给你一些想法︰ http://www.telerik.com/blogs/different-ways-to-make-a-request-to-the-server

官方微信
官方QQ群
31647020