我不认为我能找到一个明确的答案,所以我会在这里问一下.什么时候需要ScriptManager(或者在Master Page上使用ScriptManager的情况下是ScriptManagerProxy)?
例如,假设我在MasterPage上有一个ScriptManager:
如果我有一个包含UpdatePanel的Web内容表单,它是否需要ScriptManagerProxy?
如果我有一个包含用户控件的Web内容表单,并且用户控件中有一个UpdatePanel,那么用户控件是否需要ScriptManagerProxy?
如果我有一个包含UpdatePanel的Web内容表单和一个也包含UpdatePanel的UserControl,那么Web内容表单和/或用户控件是否需要ScriptManagerProxy?
谢谢.
我的孩子UpdatePanel更新其内容及其父UpdatePanel的内容.
<asp:UpdatePanel ID="UpdatePanel1"
runat="server">
...
<asp:UpdatePanel ID="UpdatePanel2"
runat="server">
...
</asp:UpdatePanel>
...
</asp:UpdatePanel>
Run Code Online (Sandbox Code Playgroud)
我不希望每次子更新时都更新我的父UpdatePanel.
我有一个使用自定义JavaScriptConverter的ASP.NET 3.5 SP1 Web应用程序.代码过去曾在某个时间工作,但已停止工作.我不知道中间服务器端发生了什么变化.我们现在看到的问题是没有调用转换器,因此我们收到System.Data.DataRow无法序列化的错误.
以下是web.config的相关部分:
<system.web.extensions>
<scripting>
<webServices>
<jsonSerialization>
<converters>
<add name="DataSetConverter" type="Microsoft.Web.Preview.Script.Serialization.Converters.DataSetConverter, Microsoft.Web.Preview" />
<add name="DataRowConverter" type="WebUI.DataRowConverter, WebUI.DataRowConverter, Version=1.1.0.323, Culture=neutral" />
<add name="DataTableConverter" type="Microsoft.Web.Preview.Script.Serialization.Converters.DataTableConverter, Microsoft.Web.Preview" />
</converters>
</jsonSerialization>
</webServices>
</scripting>
</system.web.extensions>
Run Code Online (Sandbox Code Playgroud)
该类的修剪版本如下(仅修剪以避免在不必要的实现上浪费空间):
using System;
using System.Collections.Generic;
using System.Collections.ObjectModel;
using System.Data;
using System.Web.Script.Serialization;
namespace WebUI {
public class DataRowConverter : JavaScriptConverter {
private ReadOnlyCollection<Type> _supportedTypes = new ReadOnlyCollection<Type>(new Type[] { typeof(DataRow) });
public override object Deserialize(IDictionary<string, object> dictionary, Type type, JavaScriptSerializer serializer) {
// stuff
return dr;
}
public override …Run Code Online (Sandbox Code Playgroud) 如何使用Ajax.ActionLink从控制器方法实际获取JSON?我尝试搜索网站,但最接近的是ASP.NET MVC控制器操作返回JSON或部分html
并且"最佳答案"实际上并没有告诉您如何从ajax.actionlink中的SomeActionMethod获取JSON.
我有一个ASP.Net RadioButtonList控件,AutoPostBack设置为true.我还有一个OnSelectedIndexChanged函数,只要用户更改选择就会调用该函数.最后,用户需要提供此控件所需的信息,因此当用户到达页面时,我有一个默认选择 -
<asp:RadioButtonList ID="rblHighestDegree" runat="server" AutoPostBack="true"
onselectedindexchanged="rblHighestDegree_SelectedIndexChanged">
<asp:listitem Runat="server" Text="Master's Degree" Selected="True" />
<asp:listitem Runat="server" Text="Doctorate" />
</asp:RadioButtonList>
Run Code Online (Sandbox Code Playgroud)
在上面的代码示例中,当用户从默认选择(例如,"Master's Degree")切换到不同选项(例如,"Doctorate")时,则触发SelectedIndexChanged事件.然后,如果用户改变主意,然后选择原始默认选项,则再次触发SelectedIndexChanged事件.这完全符合预期和预期.
我有第二个控件,根据上面的选择启用或禁用代码隐藏...
<asp:ScriptManager ID="scriptmanager1" runat="server" />
<asp:UpdatePanel ID="updatepanel1" runat="server">
<ContentTemplate>
<asp:RadioButtonList ID="rdlYearsOfStudy" runat="server" Enabled="false">
<asp:listitem Runat="server" Text="Less than 3 years" />
<asp:listitem Runat="server" Text="3 - 4 years" />
<asp:listitem Runat="server" Text="5 - 6 years" />
</asp:RadioButtonList>
</ContentTemplate>
<Triggers>
<asp:AsyncPostBackTrigger ControlID="rblHighestDegree" EventName="SelectedIndexChanged" />
</Triggers>
</asp:UpdatePanel>
Run Code Online (Sandbox Code Playgroud)
只有在我将第二个控件放在ASP.Net AJAX UpdatePanel中才能启用异步回发(如上所示)之后,我才会遇到这个问题.一旦我这样做,原始的RadioButtonList控件将仅在我选择当用户到达页面时未默认选择的ListItem时回发.如果用户随后选择原始默认选择,则不会发生回发.
为了澄清,如果我回发而不将适用的第二个控件放在ASP.Net AJAX UpdatePanel中,那么无论用户选择哪个RadioButtonList ListItem,SelectedIndexChanged都可以工作.另一方面,在将控件放在UpdatePanel中以应用AsyncPostBackTrigger之后,回发仅针对非默认ListItem的选择.
可能相关的更多信息是我使用Microsoft Visual Studio …
updatepanel radiobuttonlist asp.net-ajax selectedindexchanged
我已经将挑战响应方案实现为Ajax处理程序.出于某种原因,它在工作几个月后停止工作.调查问题表明,Context.Session[KEY]在挑战和响应呼叫之间失去了价值.
我把Session_Start和Session_End(和其他几个)在Global.asax.cs中的方法与一些记录那里,我看到一个新的在session_start事件与相同的会话ID解雇,没有Session_End中的事件
问题是:为什么IIS会丢失会话值?
更新:我尝试切换到SQLServer会话,但行为没有变化.在极少数情况下,会话按预期工作,不确定原因.我尝试了所有"会话丢失变量"故障排除指南我发现无效
更新2:我将问题缩小到缺少会话cookie,但修改my.browsers配置后几次尝试都没有解决问题.当我从浏览器调用ajax处理程序时,会话cookie"ASP.NetSessionId"按预期显示.我将站点和服务器的IIS设置中的cookie名称更改为"SessionId",但即使重新启动服务器,我仍然看到ASP.NET.我仍然想把这个赏金给予那些知道发生了什么的人.同时我通过在代码中设置会话cookie来解决这个问题.
Login.ashx的伪代码:
string login = GetParameter("login", context);
string passhash = GetParameter("pass", context);
string challenge = "" + Context.Session["CHALLENGE"];
if (!string.IsNullOrEmpty(challenge))
{
// this is the 'response' part
string challengeResponse = Crypto.GetChallengeResponse(Challenge, UserFromDB.PassHash);
if (challengeResponse == passhash)
{
// Great success, challenge matches the response
Log.I("Success");
return "SUCCESS";
}
else
{
Log.W("Failed to respond");
return "FAILED TO RESPOND";
}
}
else
{
// if passed login or session-stored challenge are empty …Run Code Online (Sandbox Code Playgroud) 我想在我的MVC视图中进行AJAX POST.我写了以下内容:
视图中的脚本代码
$('#media-search').click(function () {
var data = { key: $('#search-query').val() };
$.ajax({
type: 'POST',
url: '/Builder/Search',
data: JSON.stringify(data),
dataType: 'json',
contentType: 'application/json; charset=utf-8',
success: function (data) {
$('.builder').empty();
alert("Key Passed Successfully!!!");
}
});
});
Run Code Online (Sandbox Code Playgroud)
控制器代码
[HttpPost]
public ActionResult Search(string key)
{
return RedirectToAction("Simple", new { key=key });
}
Run Code Online (Sandbox Code Playgroud)
但是在AJAX POST上,我发现302找到了错误
我复制了一些代码来解决在ASP.Net中进行AJAX回发后运行JavaScript的问题.不幸的是,新代码在进行构建时给了我以下错误:
The name 'ScriptManager' does not exist in the current context
Run Code Online (Sandbox Code Playgroud)
现在我以前使用过ScriptManager,为什么现在会给我带来问题呢?是不是所有ASP.Net页面都可用?毕竟我的母版页上有一个脚本管理器......
为什么Ajax.BeginForm在提交后将我的页面重定向到新的空白页面?
我的控制器代码是:
[HttpPost]
public void ProductCommentAdd(int productId, string text)
{
//Do something
}
Run Code Online (Sandbox Code Playgroud)
在视图中调用Mvc ajax是:
@using (Ajax.BeginForm("ProductCommentAdd", "Shop", new AjaxOptions() { HttpMethod = "POST"}))
{
<input type="hidden" value="@Model.ProductId" name="ProductId"/>
<textarea name="text"></textarea>
<input type="submit" value="Submit"
}
Run Code Online (Sandbox Code Playgroud)
当我单击提交按钮时,我的页面重定向到新的空白页面.我怎么解决它?
我想调用一个jquery自动完成功能,但点击一下按钮后.在按钮单击事件中,gridview和textbox是可见的,否则它们是不可见的.
下面是我的代码脚本
$(document).ready(function () {
SearchText();
});
function SearchText()
{
$(".autosuggest").autocomplete({
source: function (request, response) {
$.ajax({
type: "POST",
contentType: "application/json; charset=utf-8",
url: "CalendarDetails.aspx/GetAutoCompleteData",
data: "{'Col3':'" + document.getElementById('txtSearch').value + "'}",
dataType: "json",
success: function (data) {
response(data.d);
},
error: function (result) {
alert("Error");
}
});
}
});
}
Run Code Online (Sandbox Code Playgroud)
HTML
<asp:ScriptManager ID="ScriptManager1" runat="server"></asp:ScriptManager>
<asp:Label ID="Label4" runat="server" Text="ID" Font-Bold="True"></asp:Label>
<asp:DropDownList ID="DropDownList1" runat="server"></asp:DropDownList>
<br />
<br />
<asp:Label ID="Label1" runat="server" Text="Start Date" Font-Bold="True"></asp:Label>
<input type="text" id="datepickerStart" runat="server" />
<asp:RequiredFieldValidator ID="RequiredFieldValidator1" runat="server" …Run Code Online (Sandbox Code Playgroud) asp.net-ajax ×10
asp.net ×4
c# ×3
.net ×2
asp.net-mvc ×2
jquery ×2
updatepanel ×2
ajax ×1
javascript ×1
json ×1
webforms ×1