我在现有Sitefinity站点内实现新的Messenger Connect功能时遇到问题,无法使用Live ID启用客户端登录.
也就是说,当我使用以下代码实现客户端功能时:
<head runat="server">
<script type="text/javascript" src="http://js.live.net/4.1/loader.js"></script>
</head>
<body>
<form runat="server" id="form1">
<asp:ScriptManager ID="ScriptManager1" runat="server"/>
<wl:app
client-id="<%= ConfigurationManager.AppSettings["wl_wrap_client_id"] %>"
scope="WL_Profiles.View"
callback-url="<%= ConfigurationManager.AppSettings["wl_wrap_client_callback"] %>?wl_session_id=<%=SessionId %>"
channel-url="/channel.htm">
</wl:app>
Run Code Online (Sandbox Code Playgroud)
...我在Firebug中遇到三个错误,我无法正确识别:
Sys.ArgumentTypeException:"Sys._Application"类型的对象无法转换为"Sys.IDisposable"类型.参数名称:对象
(在ScriptResource.axd?d = ....第4993行)
Sys.Application._doInitialize不是一个函数
(在MicrosoftAjaxBase.js第1行)
Sys.InvalidOperationException:脚本"MicrosoftAjaxGlobalization.js"已被多次引用.如果显式引用Microsoft AJAX脚本,请将ScriptManager的MicrosoftAjaxMode属性设置为Explicit.
(在ScriptResource.axd?d = ....第984行)
仅当我loader.js从js.live.net 包含脚本时才会触发错误.
编辑:似乎错误不一定按该顺序触发.刷新页面似乎打乱这些错误和/或引入其他的,如Sys.ParameterCountException在ScriptResource.axd?...上线1842,例如.
AJAX新手在这里!
在我的ASP.NET MVC Web应用程序中,我的AJAX请求似乎正在进行批处理或排队,我不确定.
在上一个请求完成之前,似乎没有任何请求完成.
我如何获得独立返回的请求?
我不一定希望有人给我答案,但可能有一些链接指向可能有用的好教程或资源.谢谢
在ASP.NET AJAX ModalPopupExtender具有OnCancelScript和OnOkScript属性,但它似乎并不有一个OnShowScript属性.我想指定每次弹出窗口时运行的javascript函数.
在过去的情况下,我设置TargetControlID为一个虚拟控件并提供我自己的控件,首先执行一些JS代码,然后使用JS方法显示弹出窗口.但在这种情况下,我将显示客户端和服务器端代码的弹出窗口.
有人知道这样做的方法吗?
顺便说一下,我需要这个,因为我在模态中有一个文本框,我想制作一个TinyMCE编辑器.但是TinyMCE init脚本不适用于隐形文本框,因此我必须找到一种方法来在模式显示时运行它
我有一个名为save()的函数,该函数收集页面上的所有输入,并对服务器执行AJAX调用以保存用户工作的状态.
当用户单击保存按钮时,当前调用save(),或执行一些需要我们在服务器上具有最新状态的其他操作(例如,从页面生成文档).
我正在增加每隔一段时间自动保存用户工作的能力.首先,我想阻止AutoSave和用户生成的保存同时运行.所以我们有以下代码(我正在削减大部分代码,这不是1:1,但应该足以让我们了解这个想法):
var isSaving=false;
var timeoutId;
var timeoutInterval=300000;
function save(showMsg)
{
//Don't save if we are already saving.
if (isSaving)
{
return;
}
isSaving=true;
//disables the autoSave timer so if we are saving via some other method
//we won't kick off the timer.
disableAutoSave();
if (showMsg) { //show a saving popup}
params=CollectParams();
PerformCallBack(params,endSave,endSaveError);
}
function endSave()
{
isSaving=false;
//hides popup if it's visible
//Turns auto saving back on so we save x milliseconds after the last save.
enableAutoSave();
} …Run Code Online (Sandbox Code Playgroud) 我是谁才刚刚开始了解客户端脚本.NET程序员,我在想,有时你使用$get('value'),并$find('value')和我发现,这些只是快捷方式document.getElementById('value'),并Sys.Application.findComponent('value')分别.
但是,我仍然不明白:JavaScript中这两个函数有什么区别?他们在调用时究竟查找/检索了什么?
提前致谢.
我的页面有一些需要在页面加载时运行的javascript.所述javascript需要找到ServerControl的客户端组件,它与$ find()一起使用.
当然,如果我直接将代码发送到页面上,它会在页面被读取时执行,并且因为它所依赖的任何内容尚未初始化而失败.
如果我将我的代码放在pageLoad()函数中,它运行得很好,因为asp.net会自动为任何名为pageLoad()的函数连接onload处理程序.问题是我真的不喜欢pageLoad()解决方案 - 主要是因为它是一个单一的全局名称.如果我使用pageLoad()提交一些代码,我只知道其他一些程序员将要复制该方法,在某个地方不合适,我们最终会得到一个包含两个或更多不同pageLoad()函数的页面,并且结果将是一堆神秘的错误,将永远追查.
所以,我把我的代码放在一个传递给jquery的$(document).ready()的匿名函数中.这失败了,因为它在ServerControl的客户端组件存在之前运行.
所以,我把我的代码放在Sys.Application.add_load()传递给的匿名函数中.这也失败了,因为系统未定义.
所以我最终决定将我的代码放在Sys.Application.add_load()中,然后将它放在$(document).ready()调用的函数中.这样可行,但它几乎与pageLoad()一样令人心痛.
<script type="text/javascript">
$(document).ready(function(){
Sys.Application.add_load(function(){
var component = $find(<clientid>);
if (component) { <do something> }
});
});
</script>
Run Code Online (Sandbox Code Playgroud)
必须有一种更好的方法来处理这个问题.
有任何想法吗?
我在UpdatePanel的ListView中有一个LinkButton.我希望按钮(好吧,其中任何一个)导致部分回发,但它们会导致整页回发.
<asp:UpdatePanel ID="upOutcomes" UpdateMode="Conditional" runat="server">
<ContentTemplate>
<asp:ListView ID="lvTargets" runat="server" onitemdatabound="lvTargets_ItemDataBound">
<ItemTemplate>
<asp:LinkButton ID="lnkAddTarget" CssClass="lo" Text='<%# Eval("Title") + " <b>" + Eval("Level") + Eval("SubLevel") + "</b>" %>' runat="server"></asp:LinkButton>
</ItemTemplate>
</asp:ListView>
</ContentTemplate>
</asp:UpdatePanel>
Run Code Online (Sandbox Code Playgroud)
我在stackoverflow上发现了另一篇帖子,建议添加:
protected void lvTargets_ItemDataBound(object sender, ListViewItemEventArgs e) {
var lb = e.Item.FindControl("lnkAddTarget") as LinkButton;
tsm.RegisterAsyncPostBackControl(lb); // ToolkitScriptManager
}
Run Code Online (Sandbox Code Playgroud)
它没有什么区别......
还有一些其他类似的帖子,但我找不到解决方案!有任何想法吗?
我已经看过几个关于这个的线程,我已经尝试了所有的答案(ASP.NET MVC JsonResult返回500)
我的ajax请求正在重新发送500内部错误.如果我调试我甚至从未接受过我的行动.
这是我的ajax电话:
$.ajax({
url: '@Url.Action("UpdateSortOrder", "FormItems")',
data: { itemToUpdateId: item.attr("id"), newParentItemId: parentItemId, newPreviousItemId: previousItemId },
type: 'POST',
success: function (data) {
console.log(data);
},
error: function (xhr, status, exception) {
console.log("Error: " + exception + ", Status: " + status);
}
});
Run Code Online (Sandbox Code Playgroud)
我的行动:
[HttpPost]
public ActionResult UpdateSortOrder(Guid itemToUpdateId, Guid newParentItemId, Guid newPreviousItemId)
{
FormItem updatedItem = _formItemService.GetOne(x => x.Id == itemToUpdateId);
return Json(updatedItem, JsonRequestBehavior.DenyGet);
}
Run Code Online (Sandbox Code Playgroud)
使用chrome控制台,这些是来自回复的响应标头:
HTTP/1.1 500内部服务器错误缓存控制:私有内容类型:text/html; charset = utf-8服务器:Microsoft-IIS/7.5 X-AspNetMvc-版本:3.0 X-AspNet-版本:4.0.30319 X-Powered-By:ASP.NET日期:星期二,2012年12月18日21:53:41 GMT内容长度:17041
服务器日志不显示子状态代码.知道我在这里做错了什么吗?我更喜欢使用POST而不是GET. …
有没有办法在UpdatePanel进程完成时执行脚本.
我有一个页面,允许"插入","复制"和"编辑"记录.这都是在UpdatePanel上完成的,以防止页面导航.在页面的其他地方,我想打印一条"flash"消息 - 比如"你已成功输入记录".它不在UpdatePanel附近,我想对消息使用jQuery效果,因此它会在4秒后淡出.如何使用UpdatePanel发回脚本或在UpdatePanel刷新后执行脚本?我应该将脚本写入asp:literal吗?想法?
我正在使用C#和Ajax开发一个ASP.NET应用程序.
我有一个页面,用于保存动态加载的用户控件.我需要将一些数据(整数值和一些字符串)传递给动态加载的用户控件.
现在我使用Session来传递这些值,但我想我可以用另一种方式; 类似于VIEWSTATE或隐藏的输入.
你推荐我什么?
更新:
我动态加载控件这一事实非常重要,因为每次回发都会加载控件,而且我无法在控件上存储任何值.
asp.net-ajax ×10
asp.net ×4
javascript ×4
ajax ×2
asp.net-mvc ×2
c# ×2
jquery ×2
ascx ×1
concurrency ×1
listview ×1
liveid ×1
sitefinity ×1
updatepanel ×1