ASP.NET / Java – 脚本注册/重定向问题
我的页面上有一个提交按钮(服务器端按钮).
这是我点击事件的代码: protected void SubmitButton_Click(object sender,EventArgs e) { db.SaveSomething(); Page.ClientScript.RegisterStartupScript("someScriptWhichReliesOnServerData"); Response.Redirect("SomeOtherPage.aspx"); } 现在,问题是,我使用Page.ClientScript.RegisterStartupScript注册JavaScript,但这不起作用,因为页面没有在回发时重新呈现(这是脚本将被执行的地方),因为而是响应.重定向发生. 我能想到的唯一解决方案是让页面重定向到“意识到”我试图执行一些JavaScript,无论是QueryString,HttpContext.Current.Items还是(gulp)Session. > QueryString – 不是一个选项,因为它是我试图执行的JavaScript. 还有其他想法/建议吗? 编辑澄清: JavaScript即时执行是对Facebook客户端API的调用,以发布到用户的墙上.它必须在客户端完成.我传递给脚本的东西,如“标题”,“消息”,“动作链接”等.基本上是一堆JSON.但关键是这个数据是在回发时创建的,所以我不能在客户端点击时执行这个功能. 所以我试图完成的是提交按钮单击,执行一些JavaScript并执行重定向(不必按顺序,只需要发生). 解决方法
我认为你所经历的是两种不同范式的不幸冲突.一方面,你有一个你想要利用的AJAX风格的API,另一方面你有ASP.Net页面回发模型.
现在,虽然这两者并不相互排斥,但它可能会带来一些挑战.我同意Dan,你最好的选择是更倾向于采用AJAX方法,而不是相反. ASP.Net的一个很好的功能是能够将页面中的单个静态方法转换为伪Web服务.然后,您可以使用ScriptManager生成客户端代理类以便为您调用该方法,但您可以使用whatever client side library you want. 一个非常简单的例子: 在你的代码隐藏页面 [WebMethod] public static Person GetPerson(Int32 id,String lastName) { return DataAccess.GetPerson(id,lastName); } 如果您使用ASP.Net AJAX库来为您处理此问题,那么您需要启用页面方法来生成客户端代理. <asp:ScriptManager ID="ScriptManager1" runat="server" EnablePageMethods="true"> </asp:ScriptManager> 然后你可以从客户端脚本调用它,如下所示: function CallGetPerson() { var id = $get("txtPersonId").value; var lastName = $get("txtLastName").value; // PageMethods is a class that is part of the ASP.Net AJAX // client-side libraries and will contain your auto-generated // proxy methods for making XHR requests. PageMethods.GetPerson(id,lastName,OnGetPersonComplete); } function OnGetPersonComplete(result) { faceBookApi.DoSomeStuffWithJson(result); window.location = "NewPage.aspx"; } 再说一次,这是一个人为的例子,你发布到服务器的内容可能非常复杂,但是你可以大致了解使用内置框架组件可以实现什么. 我希望这有帮助. (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |
- asp.net-mvc – 如何防止HttpUnauthorizedResult
- asp.net – Session_Start没有解雇
- asp.net – IIS Express全能子域名网址
- ASP.NET MVC 4和会话安全漏洞
- asp.net-mvc – 来自Objects MVC的DropDownList
- .NET的标记SO如何在飞行中呈现?
- asp.net-mvc – 从asp.net POST动作方法更新nhib
- 实体框架 – 使用伪造的DbContext和Autofixture以
- 使用ASP.NET Web API进行OAuth Facebook身份验证
- ASP.NET(C#)应用程序配置文件app.config/web.con