我有一个asp.net 4.0应用程序,其中所有页面都使用母版页。我有几个动态方面正在进行的母版页和子页的页面。对于这两种模式,我都希望能够使用内置的微软ScriptManager和这种模式:
代码隐藏:
using System;
using System.Web;
using System.Web.Services;
namespace MyApp.Secure
{
public partial class myPage : System.Web.UI.Page
{
protected void Page_Load(object sender, EventArgs e)
{
}
[WebMethod]
public static string GetString()
{
return "abc";
}
}
}然后在页面内容本身中:
<script>
PageMethods.GetString(OnSucceeded, OnFailed);
function OnSucceeded(rslt) {
alert('cool,worked.');
}
function OnFailed(error) {
alert('ooops,failed.');
}
</script>因此,为了使用这种技术,我想在我的母版页和子页中都公开静态WebMethod。我的问题是,我如何使用ScriptManager来管理这一点?根据我的理解,我需要在表单标记中包含一个ScriptManager (为什么?)这样就添加了一个javascript库来允许我使用PageMethods对象。我是否应该在我的母版页中创建一个ScriptManager,并将其放在母版页中的一个无用的表单标签中?我的子页面中的WebMethod函数会被ScriptManager接收吗?关于表单标签:我知道我只能有一个表单runat='server‘标签,那么我如何在我的母版页中管理我需要的其他表单呢?就像我在页面顶部包装搜索功能的小表单一样?
谢谢
发布于 2010-12-15 10:47:49
自从我放弃使用ScriptManager后,这个问题就变得毫无意义了。我已经能够让ExtJS直接发布到我的WebMethod上,而不需要依赖任何额外的微软开销。我不明白为什么任何已经在使用好的javascript库(比如ExtJs或jQuery)的人都会走ScriptManager的路,你肯定不需要它,它只会限制你使用与你的应用程序无关的标签的特定需求。
发布于 2010-12-11 05:54:37
母版页上的ScriptManager就足够了(表单标签中的是)。在继承母版的页面上,放置一个scriptmanagerproxy控件。
我认为通常人们使用一个表单标签,然后对于表单按钮,回发处理适当的操作-比如重定向到搜索页面。我不是这个方法的粉丝,当你只想重定向到一个包含querystring的搜索页面时,为什么还要处理回发呢?我主要使用javascript来绕过它,要么单击按钮将表单操作更改为任何适当的操作,要么完全覆盖提交按钮类型并让javascript构建新的url并更改地址栏。
发布于 2010-12-11 06:24:13
在ASP.Net中,您只能有一个表单标记。您需要做的是将表单标记放在母版页中,并且在使用主页的任何页面中都没有表单标记。我将ScriptManager放在母版页中的表单标记的正下方,因为使用该母版页的所有页面都会看到它。您的搜索功能必须在表单标签内,并且不能有自己的表单标签,它将使用母版页中的表单。使用更新面板,您可以隔离搜索文本框和按钮,并在后面的代码中做任何您想做的事情,例如重定向到搜索结果页面或类似的东西。
https://stackoverflow.com/questions/4413594
复制相似问题