我们使用Microsoft编写了几个控件(cs类+ js类)。现在我正在考虑摆脱它(只使用jQuery),因为它膨胀了,我们不使用UpdatePanel。我的问题是:我应该如何改变我的控制?现在,他们实现了IScriptControl,它使用Microsoft特性(如果我理解正确的话,ScriptManager & ScriptControlDescriptor类)。用什么代替?
澄清。我不需要更多的JavaScript库--我已经在使用jQuery了,并且希望最小化额外的包含(除非它们非常小)。我需要的是替换ScriptManager和IScriptControl接口。比如:
发布于 2009-11-26 09:23:11
好了,我终于完成了。
2,3,4.我们使用jQuery.data方法将脚本类的实例绑定到DOM元素。我们使用jQuery.ready方法执行实例化、初始化和绑定代码。此代码将使用AddScript方法添加到其呈现方法中的控件中(见下文)。也许稍后我们会使用JavaScriptSerializer将值从C#控件传递给javascript类,但目前我们用手将参数传递给javascript类构造函数。
HashSet<string> scriptReferences = new HashSet<string>();
HashSet<string> cssReferences = new HashSet<string>();
List<string> styles = new List<string>();
public void AddScriptReference(string url, bool resolve)
{
string realUrl = url;
if (resolve)
realUrl = ResolveClientUrl(url);
if (!scriptReferences.Contains(realUrl))
{
scriptReferences.Add(realUrl);
Header.Controls.Add(
new LiteralControl(
"<script type='text/javascript' src='" +
realUrl + "'></script>"));
}
}
public void AddCssReference(string url)
{
if (!cssReferences.Contains(url))
{
cssReferences.Add(url);
HtmlLink link = new HtmlLink();
//link.Href = ResolveClientUrl("~/jQuery-ui/css/ui-lightness/jquery-ui.css");
link.Href = url;
link.Attributes.Add("type", "text/css");
link.Attributes.Add("rel", "stylesheet");
Header.Controls.Add(link);
}
}
public void AddCssStyle(string style)
{
styles.Add(style);
}
protected override void OnPreRenderComplete(EventArgs e)
{
base.OnPreRenderComplete(e);
Header.Controls.Add(
new LiteralControl(
"<style type='text/css'>" + styles.Join("\n") + "</style>"
)
);
}
public static void AddScript(HtmlTextWriter writer, string script,
bool executeWhenReady)
{
writer.AddAttribute(HtmlTextWriterAttribute.Type, "text/javascript");
writer.RenderBeginTag(HtmlTextWriterTag.Script);
if (executeWhenReady)
{
writer.Write("$(function(){\n");
}
writer.Write(script);
if (executeWhenReady)
{
writer.Write("});\n");
}
writer.RenderEndTag();
}发布于 2011-03-17 04:53:30
另一方面,您可以尝试comet方法,检查这些示例。
发布于 2009-11-18 18:51:41
jQuery和jQuery UI非常强大。但是你也可以使用Moo工具和原型。您使用的是MS AJAX中的哪些工具?在开源的非MS产品中,几乎有很多类似的东西。他们只是需要稍微多一点的劳动,在你的执行。您还可以查看Telerik和Syncfusions控件。Telerik为ASP.NET MVC提供了一系列开放源码的ajax服务,可以很容易地转换成ASP.NET的Web。
https://stackoverflow.com/questions/1757709
复制相似问题