我计划开发一个 ASP.NET 服务器控件来为新用户注册提供异步用户名可用性验证。该控件将允许开发人员将其指向“用户名”文本框,并提供用户名是否可用的指示。像这个例子,但没有笨重的 UpdatePanel。
一个让我头疼的设计决策是是从ScriptControl还是BaseValidator继承。
通过将它实现为ScriptControl,我可以使客户端部分更容易处理并使用 resx 轻松本地化它。
但是,我想确保验证器在 Page.IsValid 方面正常运行。我知道这样做的唯一方法是覆盖BaseValidator并实现EvaluateIsValid().
所以,我的问题是,您建议如何构建此控件?从 BaseValidator 继承是使验证器部分正确的最佳(唯一)方法,还是我可以用其他方式做到这一点?
我想和大家分享我今天学到的东西。我的问题是:
您可以将 JSON 对象从 JavaScript 代码传递到 .NET 页面方法吗?例如:
var task = {
Title: $("#titlenew input", $(newTaskRow)).val(),
StartDate: $("#startnew input", $(newTaskRow)).val(),
EndDate: $("#endnew input", $(newTaskRow)).val(),
EstimatedHours: $("#esthrsnew input", $(newTaskRow)).val(),
PredecessorsOutlineNumbers: $("#depnew input", $(newTaskRow)).val(),
OutlineNumber: $("#ordernew", $(newTaskRow)).text()
};
PageMethods.AddTask(task, saveNewTaskCompleted, saveNewTaskFailed);
Run Code Online (Sandbox Code Playgroud)
如果可以,我的 Web 方法应该接受什么类型的 .NET 对象?
我发现是的,你可以将一个 JSON 对象传递给一个 Page 方法,它作为一个字典(字符串,字符串)出现。所以我的 web 方法签名是这样的:
<System.Web.Services.WebMethod()> _
Public Shared Sub AddTask(ByVal taskJson As Dictionary(Of String, String))
Dim oTask As New Task()
oTask.Title = taskJson("Title")
' all other accesses to the JSON object here
End …Run Code Online (Sandbox Code Playgroud) 我想问大家一个简单的问题。
我在更新面板中有一个网格视图。我的模态弹出窗口拉起这个面板。到目前为止我很好。
但是,当我尝试在弹出的网格视图上进行分页时,页面会回发。
然后模态弹出窗口消失了,我的 GridView 也消失了。
当我再次单击 mybutton 时,它会显示带有网格视图的模态弹出窗口和网格视图中的下一页内容。
有什么方法可以让这个网格视图进行分页而不回发并且不丢失模态弹出窗口?
任何帮助将不胜感激。
谢谢,
我制作了一个 Azure Web 应用程序,它有一个 ASP.NET Web,其中还包含一些 JSON WCF 服务。我真的不太了解 WCF 服务模型,无法确保我做对了,这对您来说是否正确?是否有其他服务模型配置在可扩展性、最大并发连接数等方面更好?
<system.serviceModel>
<behaviors>
<serviceBehaviors>
<behavior name="">
<serviceMetadata httpGetEnabled="true" />
<serviceDebug includeExceptionDetailInFaults="true" />
</behavior>
</serviceBehaviors>
</behaviors>
<serviceHostingEnvironment multipleSiteBindingsEnabled="true" aspNetCompatibilityEnabled="true" />
</system.serviceModel>
<system.net>
<settings>
<!-- See http://social.msdn.microsoft.com/Forums/en-US/windowsazuredata/thread/d84ba34b-b0e0-4961-a167-bbe7618beb83 -->
<servicePointManager expect100Continue="false" />
</settings>
</system.net>
Run Code Online (Sandbox Code Playgroud)
这有效,但我偶尔会遇到意外的连接断开(超时),在我的开发环境中没有让我担心的 HTTP 错误代码。
2011 年 11 月 24 日更新
网页配置
<system.net>
<connectionManagement>
<!-- See http://social.msdn.microsoft.com/Forums/en-US/windowsazuredata/thread/d84ba34b-b0e0-4961-a167-bbe7618beb83 -->
<add address="*" maxconnection="48" />
</connectionManagement>
</system.net>
Run Code Online (Sandbox Code Playgroud)
我怀疑可能是 Visual Studio Web 服务器导致 Ajax 调用超时,几分钟后该服务再次开始接受请求。这是我的完整设置,你能看到问题是什么吗?我对该服务只有一个 Ajax 调用。
接口
IExample.cs:
using System.ServiceModel;
using System.ServiceModel.Web;
namespace WebPages.Interfaces …Run Code Online (Sandbox Code Playgroud) 我花了将近3个小时来处理以下案例:
我尝试了很多情况,但找不到明确的例子。
我有一个更新面板,当我按下其中的特定图像按钮时,会显示一些弹出窗口。(弹出窗口最初是隐藏的,当请求完成时,被display:none删除=>它看起来很好)
function BeginRequestHandler(sender, args) {
}
function EndRequestHandler(sender, args) {
document.getElementById('popup').style.display = '';
document.getElementById('overlay').style.display = '';
}
Run Code Online (Sandbox Code Playgroud)
好吧,问题是我需要创建一个 js 函数来执行 asyncPostBack,因为当单击该控件的某些部分时将从 Flash 控件调用该 js 函数,因此我想模拟对图像的单击。(因为单击此弹出窗口会显示如上所示)
问题是我无法在任何地方找到这样的例子。这个js函数将接收一个参数,因此当我进行回发时,我希望能够在服务器端获取该参数。(这个参数似乎是主要问题=-当我进行回发时如何将其发送到服务器?)。
抱歉,如果我不太清楚,但是您能给我一些有关此内容或示例的文档吗?
多谢!
更新: 请注意我已经完成的第一个案例,在我的 UpdatePanel 中使用 ImageButton:
<asp:ImageButton ID="lnkDetails" runat="server" ImageUrl='<%# DataBinder.Eval(Container.DataItem, "Logo") %>'
AlternateText='<%# DataBinder.Eval(Container.DataItem, "Name") %>' OnCommand="lnkDetails_Command"
CommandArgument='<%# DataBinder.Eval(Container.DataItem, "TenantID") %>' Text="Click">
</asp:ImageButton></li>
Run Code Online (Sandbox Code Playgroud)
我只需要“模拟”此点击,使用 javascript 进行异步回发(因为当我从 flash 调用时,flash 控件将调用我的 js 方法进行回发)
我正在尝试使用.aspx页面中的方法为AJAX请求提供服务.出于某种原因,我没有得到我想要的数据.谁能告诉我我做错了什么?
mypage.aspx:
<%@ Page Language="VB" Title="My Page" %>
<%@ Import Namespace="System.Web.Services" %>
<%@ Import Namespace="System.Collections.Generic" %>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<script runat="server">
Protected Sub Page_Load(sender As Object, e As System.EventArgs)
End Sub
<WebMethod()> Public Function testmethod() As Integer
Return 5
End Function
</script>
<html>
<!--...rest of page including mybutton and myresults-->
Run Code Online (Sandbox Code Playgroud)
JQuery的:
$("#mybutton").click(function() {
$.ajax({
type: "POST",
url: "mypage.aspx/testmethod",
data: "{}",
contentType: "application/json; charset=utf-8",
dataType: "json",
success: function(msg) {
alert("success");
$("#myresults").html(msg.d);
},
error: function(msg) {
alert("error:" …Run Code Online (Sandbox Code Playgroud) 以下具体做了什么:
$.ajax({
type: "POST",
async: false,
Run Code Online (Sandbox Code Playgroud)
对比
$.ajax({
type: "POST",
async: true,
Run Code Online (Sandbox Code Playgroud)
这意味着行为有什么不同?
当要查找的元素具有 时,我们有几种情况$get('foo')或document.getElementById('foo')失败style="display:none;"。这似乎在某些浏览器中有效,但在其他浏览器中无效;特别是下面显示的情况在兼容模式下在 IE9 中工作正常,但在兼容模式关闭时失败。
谁能解释为什么会发生这种情况,以及我们如何解决它?下面是一个例子。
我们的 ASPX 页面包含
<span id="JobAddressCheckBoxWrapper" style="display: none;">
<asp:CheckBox ID="JobAddressCheckBox" CssClass="DefaultTextCell" runat="server" Text="__Job address"
Style="margin-right: 2em;" onclick="ShowJobAddress();" />
</span>
<span id="PredefinedReplyCheckBoxWrapper">
<asp:CheckBox ID="PredefinedReplyCheckBox" CssClass="DefaultTextCell" runat="server"
Text="__Pre-defined reply" onclick="ShowReplies()" AutoPostBack="false" Style="margin-right: 2em;" />
</span>
Run Code Online (Sandbox Code Playgroud)
这导致生成的 HTML
<span style="display: none;" id="JobAddressCheckBoxWrapper">
<span style="margin-right: 2em;" class="DefaultTextCell">
<input id="JobAddressCheckBox" onclick="ShowJobAddress();" name="JobAddressCheckBox" type="checkbox">
<label for="JobAddressCheckBox">Job address</label>
</span>
</span>
<span id="PredefinedReplyCheckBoxWrapper">
<span style="margin-right: 2em;" class="DefaultTextCell">
<input id="PredefinedReplyCheckBox" onclick="ShowReplies();" name="PredefinedReplyCheckBox" type="checkbox">
<label for="PredefinedReplyCheckBox">Predefined reply</label>
</span>
</span>
Run Code Online (Sandbox Code Playgroud)
以下 …
我在更新面板中有一个文本框.当用户键入内容时,我从数据库中获取相关数据并将其填入另一个文本框中.我的问题是,在autopostback之后,对任何文本框的关注都会丢失.我如何使用javascript或代码管理这个,因为我在我使用的代码中使用了两者
System.Web.UI.ScriptManager.GetCurrent(this).SetFocus(this.txtReference);
Run Code Online (Sandbox Code Playgroud)
和JavaScript我发现还有一个
<script type="text/javascript">
var postbackElement;
Sys.WebForms.PageRequestManager.getInstance().add_beginRequest(beginRequest);
Sys.WebForms.PageRequestManager.getInstance().add_pageLoaded(pageLoaded);
function beginRequest(sender, args) {
postbackElement = args.get_postBackElement();
}
function pageLoaded(sender, args) {
var updatedPanels = args.get_panelsUpdated();
if (typeof (postbackElement) === "undefined") {
alert('if Loop');
return;
}
else if (postbackElement.id.toLowerCase().indexOf('button1') > -1) {
alert('else');
for (i = 0; i < updatedPanels.length; i++) {
document.getElementById('<%= txtAcctNo.ClientID %>').focus();
}
}
}
</script>
Run Code Online (Sandbox Code Playgroud)
但没有工作,因为'button1 undefined'.我放在那里是因为所有事件都在aspx页面的OnTextChanged =""上执行.
所以请通过代码或javascript帮助我如何做到这一点.
我正在对传递 FormData() 的控制器进行 ajax 调用,它有一个对象数组以及一些其他属性。在我的控制器中,我传递的列表数组似乎有 0 个元素。请帮忙!
cshtml 视图中的脚本 -
var _getFormDataToJson = function () {
var applyDetail = [];
$(_tb).find('tbody tr').each(function (i, v) {
var trans = {
effectiveDate: $(this).find('.effectiveDate').val(),
amount: $(this).find('.amount').val(),
empLeaveHdID: $('#tx-leaveHdID').val(),
//attachmentUrl: $(this).find('.leaveAttachment')[0].files[0]
}
applyDetail.push(trans);
});
var formObj = new FormData();
formObj.append('remark', $('#tx-remark').val());
formObj.append('leaveAppType', $('#hdnLeaveAppType').val());
formObj.append('applyDetail', applyDetail); //this collection has 0 items in controller
return formObj;
}
var _sumbitForm = function () {
var formData2 = _getFormDataToJson();
$.ajax({
url: '@Url.Action("ApplyLeave", "Leave")',
type: 'POST',
processData: false,
contentType: …Run Code Online (Sandbox Code Playgroud) asp.net-ajax ×10
asp.net ×5
javascript ×4
ajax ×3
jquery ×3
asp.net-3.5 ×1
asp.net-mvc ×1
asynchronous ×1
azure ×1
c# ×1
get ×1
gridview ×1
json ×1
post ×1
updatepanel ×1
validation ×1
vb.net ×1
wcf ×1
webmethod ×1