嗨我需要在udate面板异步回发后拦截服务器回调并确定哪个面板发起了请求.代码非常简单:
Sys.WebForms.PageRequestManager.getInstance().add_pageLoaded(InterceptUpdateCallback);
function InterceptUpdateCallback(sender, args)
{
var updatedPanels = args.get_panelsUpdated();
for (idx = 0; idx < updatedPanels.length; idx++) {
if (updatedPanels[idx].id == "myUpdatePanel") {
StartSmth();
break;
}
}
}
Run Code Online (Sandbox Code Playgroud)
当UpdatePanel不在另一个UpdatePanel中时,它可以工作.但是当它在另一个UpdatePanel内时,updatedPanels [idx] .id具有父Updatepanel id.那么我怎样才能获得启动请求的UpdatePanel的id(内部UpdatePanel)?感谢名单
嗨我正在通过asp.net Ajax加载巨大的数据按钮单击网格视图显示加载消息更新prgress ...在更新进度时我必须禁用我的BtnLoadReport按钮.
<td>
<asp:ScriptManager ID="ScriptManager1" runat="server"></asp:ScriptManager>
</td>
<td>
</td>
<td>
</td>
</tr>
<tr>
<td>
<asp:UpdateProgress ID="updProgress"
AssociatedUpdatePanelID="UpdatePanel1"
runat="server" oninit="updProgress_Init" onprerender="updProgress_PreRender">
<ProgressTemplate>
<span style="color:green; font-style:italic;">Loading, please wait...</span>
</ProgressTemplate>
</asp:UpdateProgress>
<asp:UpdatePanel ID="UpdatePanel1" UpdateMode="Conditional" runat="server">
<ContentTemplate>
<div id="DemoId">
<asp:Button ID="BtnLoadReport" runat="server" onclick="BtnLoadReport_Click"
Text="LoadReport" Width="176px" ClientIDMode="Static" OnClientClick="return clickOnLoadReport();" />
</div>
<asp:GridView ID="GridView1" runat="server" Height="170px"
onselectedindexchanged="GridView1_SelectedIndexChanged" Width="438px">
</asp:GridView>
</ContentTemplate>
<Triggers>
<asp:AsyncPostBackTrigger ControlID="BtnLoadReport" EventName="Click" />
</Triggers>
</asp:UpdatePanel>
</td>
<td>
</td>
<td>
</td>
</tr>
</table>
Run Code Online (Sandbox Code Playgroud)
我的脚本禁用按钮
<script type="text/javascript">
var updateProgress = null;
function clickOnLoadReport() {
// …Run Code Online (Sandbox Code Playgroud) 所有这些都是为了丢弃MVC控制器的问题.
这是ajax的代码:
$.ajax({
//tipo de transferencia
type: "POST",
//dato a enviar
dataType: 'Json',
traditional:true,
//enviar variable previamente formada contiene la estructura del modelo
data:data,
//liga previamente asignada esta liga contiene la ruta controlador-metodo
url: url,
Run Code Online (Sandbox Code Playgroud)
注意传统:真实.
我有一个ASP.NET Web服务,它可以执行一些繁重的工作,例如,一些文件操作,或者从一堆水晶报表生成Excel表格.我不希望通过调用此Web服务来阻止,所以我想让Web服务调用异步.另外,我想从网页上调用这个Web服务,并希望有一些机制可以让我继续轮询服务器,这样我就可以在屏幕上显示一些进度指示,比如说,文件的数量.已经处理完毕.请注意,我不希望在完成Web方法调用时收到通知,而是希望获得实时进度状态.我该怎么做呢?
当我的asp.net AJAX更新面板更新时,我遇到了一个问题,它在我的表顶部而不是在它下面所属的位置呈现内容是我的代码:
<tr>
<td>
</td>
<td>
<asp:CheckBox ID="ddCheckbox" runat="server" Text="Checkbox"
AutoPostBack="true" OnCheckedChanged="ddCheckboxChanged" />
</td>
</tr>
<asp:UpdatePanel ID="uxUpdatePanel" runat="server" RenderMode="Inline" UpdateMode="Conditional">
<ContentTemplate>
<tr>
<td>
Some Field:
</td>
<td>
<asp:TextBox ID="ddSomeField" runat="server" />
</td>
</tr>
</ContentTemplate>
<Triggers>
<asp:AsyncPostBackTrigger ControlID="ddCheckbox" EventName="CheckedChanged" />
</Triggers>
</asp:UpdatePanel>
Run Code Online (Sandbox Code Playgroud)
在我的服务器端事件中,我只是启用/禁用文本框.
到目前为止,我已经使用了jQuery验证插件以及之前定义的字段.现在我正在使用动态表单.字段通过其类映射其验证需求(例如"必需"),但我没有看到如何自定义jQuery验证抛出的消息.
我一直听说服务器端的ASP .NET AJAX控件(比如UpdatePanels)虽然看起来不是真正的AJAX,但因为渲染并不完全在客户端.我试图更清楚地理解这一点.有人可以详细说明吗?
谢谢...
我有一个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
我想在我的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找到了错误
为什么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)
当我单击提交按钮时,我的页面重定向到新的空白页面.我怎么解决它?
asp.net-ajax ×10
ajax ×3
asp.net ×3
c# ×3
updatepanel ×3
asp.net-mvc ×2
jquery ×2
.net ×1
asynchronous ×1
c#-4.0 ×1
javascript ×1
post ×1
web-services ×1