标签: asp.net-ajax

ASP.NET MVC AJAX Sys是未定义的错误

当我尝试AJAX调用时,我在MVC应用程序中的某个页面上收到"Microsoft JScript运行时错误:'Sys'未定义"错误.AJAX调用是从部分视图中进行的,该视图嵌入在多个页面中.它可以在除一个页面之外的所有页面上正常工作.我已经阅读了指向web.config文件设置和.axd映射的帖子作为可能的解决方案,但是在web.config中正确配置了应用程序,并且IIS中的.axd映射也是正确的.此外,它可以在使用此局部视图的所有页面上正常工作,除了一个.它表现得像AJAX库没有加载这一页.

对脚本文件的引用位于共享的site.master文件中.所有页面(包括不起作用的页面)都引用相同的母版页.

有任何想法吗?我已经在这个工作了两天了.谢谢.

编辑:正如Sam在下面指出的那样,似乎AJAX调用在AJAX库有机会加载之前就已经开始了.但是,AJAX调用是在页面呈现后很长时间由提交按钮触发的,因此AJAX库有足够的时间加载 - 抱歉第一次没有提供足够的信息.

asp.net asp.net-mvc asp.net-ajax

7
推荐指数
3
解决办法
2万
查看次数

带有HTML.ValidationMessageFor的ASP.NET MVC AJAX

我已经习惯了ASP.NET Webforms使用UpdatePanels进行AJAX的简单方法.我理解这个过程对MVC来说更具手工艺.

在特定情况下,我使用数据注释来验证某些表单输入.我使用HTML.ValidationMessageFor帮助程序来显示错误消息.如果我想使用AJAX发布此表单并显示此错误消息,那么该过程会是什么?是否可以保留HTML.ValidationMessageFor并使其与AJAX一起使用?

谢谢.

ajax asp.net-mvc jquery asp.net-ajax asp.net-mvc-2

7
推荐指数
2
解决办法
1万
查看次数

在ASP.NET内容页面上设置ScriptManager AsyncPostBackTimeout值

我在我的ASP.NET网站上使用母版页,在我上传文件的一个内容页面中,需要比默认值90秒更长的超时值.对于其他内容页面,我想保留默认的超时值.

是否可以为特定内容页面设置超时?我检查了ScriptManagerProxy组件,但它没有AsyncPostBackTimeout属性.

asp.net timeout master-pages asp.net-ajax scriptmanager

7
推荐指数
1
解决办法
2万
查看次数

禁用ASP.NET AJAX的原因

我有一个使用ASP.NET AJAX和AJAX控件工具包的ASP.NET应用程序.该应用程序在PC上的所有最新浏览器上运行良好.它也适用于我的iPad,至少在第一次访问应用程序时.我发现如果我关闭iPad并稍后返回页面(通过书签或类似文件),该网站就会被破坏.我已经缩小了ASP.NET/ASP.NET AJAX问题/ bug /限制的失败,我正在寻求一些帮助来推进.

使用Fiddler作为iPad的代理服务器,我在重新打开页面时发现了以下问题.

  1. 我的*.skin文件未正确应用.生成的样式标记不包含*.skin文件中指定的某些参数.
  2. 该页面不包含MicrosoftAjaxWebForms.js文件.(工作时,它会在所有ToolkitScriptManager脚本的正上方发出对ScriptResource.axd的引用.
  3. 该页面不包含对以函数WebForm_FindFirstFocusableChild(control)开头的另一个js文件的引用
  4. 该页面不包含一些隐藏字段,例如__LASTFOCUS,__ EVENTTARGET和__EVENTARGUMENT
  5. 该页面不包含使用document.forms ['aspnetForm']和定义__doPostBack的脚本块.
  6. 该页面不包含执行Sys.WebForms.PageRequestManager._initialize的脚本块
  7. 其他一些初始化脚本不存在(设置焦点,创建updateprogress等)

不知何故,似乎框架决定它不需要这些脚本并且不会发出它们.鉴于所有脚本都是相互关联的,必然有一个共同的原因.这可能与不包含*.skin属性的原因有关.有任何想法吗?我会想到浏览器功能,但这只发生在后续访问网站,而不是第一次.

编辑:绝对看起来像浏览器功能问题.

请求有效:用户代理:Mozilla/5.0(iPad; U; CPU OS 4_3_3,如Mac OS X; en-us)AppleWebKit/533.17.9(KHTML,类似Gecko)版本/ 5.0.2

请求不:User-Agent:Mozilla/5.0(iPad; U; CPU OS 4_3_3,如Mac OS X; en-us)AppleWebKit/533.17.9(KHTML,如Gecko)Mobile/8J2

将尝试在App_Browsers中创建自定义文件并使用额外信息进行回发.

asp.net webforms asp.net-ajax

7
推荐指数
1
解决办法
2175
查看次数

如何在Web应用程序中使用ServiceStack Redis来利用pub/sub范例

我对Pub/Sub范例感兴趣,以便提供一个通知系统(即:像Facebook一样),特别是在一个Web应用程序中,该应用程序具有发布者(在同一Web服务器IIS上的多个Web应用程序中)和一个或多个订阅者,收费以在网络上显示前端用户的通知.

我发现了Redis,它似乎是一个很棒的服务器,提供了有趣的功能:缓存(如Memcached),Pub/Sub,队列.

不幸的是,我没有在Web上下文(ASP.NET,使用Ajax/jQuery)中找到任何示例,除了WebSockets和NodeJS,但我不想使用那些(太早).我想我需要从出版商接收消息的过程(用户),但我不知道怎样做,在一个Web应用程序(发布/订阅正常工作与单元测试).

编辑:我们目前使用.NET(ASP.NET Forms)并试用ServiceStack.Redis库(http://www.servicestack.net/)

asp.net asp.net-ajax publish-subscribe redis servicestack

7
推荐指数
3
解决办法
2796
查看次数

UpdatePanel内的ASP.NET标签未更新

我是ASP.NET的新手,我正在尝试使用在按下按钮时抓取的一些信息来更新Label.调用click函数并返回正常(我调试并逐步完成整个过程).唯一不起作用的是我设置我正在尝试更新的标签的文本.

这是在按钮单击时调用的函数:

Protected Sub submitbutton_Click(ByVal sender As Object, ByVal e As System.EventArgs) Handles submitbutton.Click
        Dim res As String() = query(email1.Text)
        If Not res Is Nothing Then
            url1.Text = res(0)
            date1.Text = res(1)
        End If

    End Sub
Run Code Online (Sandbox Code Playgroud)

我知道它进入if并尝试设置文本但客户端没有任何反应.

这是我有的UpdatePanel:

<asp:UpdatePanel ID="UpdatePanelSettings" runat="server" UpdateMode="Always"  >
        <Triggers>
            <asp:AsyncPostBackTrigger ControlID="submitbutton" EventName="click" />
        </Triggers>
        <ContentTemplate>
            <table>
                <tr>
                    <td>Emails</td><td>Url Parsed</td><td>Date Created</td>
                </tr>
                <tr>
                    <td>
                        <asp:TextBox runat="server" ID="email1" Width="300" />
                    </td>
                    <td>
                        <asp:Label runat="server" ID="url1" Text="-" />
                    </td>
                    <td>
                        <asp:Label runat="server" ID="date1" Text="-" />
                    </td>
                </tr>
                <tr> …
Run Code Online (Sandbox Code Playgroud)

asp.net ajax updatepanel asp.net-ajax

7
推荐指数
1
解决办法
2万
查看次数

使用Ajax将表单数据发布到Controller的操作

我在MVC3中有一个页面,带有一个链接(Ajax.ActionLink).当用户单击它时,它会调用控制器的操作,并将结果插入到div中,并使用replace.

代码如下所示:

@Ajax.ImageActionLink("/Images/btn_share.png", "Share pool", "SharePool", new { poolKey = Model.Id, poolName = Model.Name },
    new AjaxOptions { 
        UpdateTargetId="popup", 
        HttpMethod="GET", 
        InsertionMode = InsertionMode.Replace,
        LoadingElementId="loading_dialog",
        OnSuccess = "ShowPopup('#popup_share', true, true)"
    } 
Run Code Online (Sandbox Code Playgroud)

ImageLinkAction是使用image作为链接的自定义扩展方法,ShowPopup是一个javascript函数,显示更新的div(使其看起来像弹出窗口)

现在插入到创建弹出窗口的div中的标记代码包含如下表单

<div>
@using (Html.BeginForm()) {

    @Html.HiddenFor(model => model.ID)

    <div class="editor-label">
        @Html.LabelFor(model => model.EmailAddress)
    </div>
    <div class="editor-field">
        @Html.EditorFor(model => model.EmailAddress)
        @Html.ValidationMessageFor(model => model.EmailAddress)
    </div>

    // ... other fields

    @Html.ValidationSummary(true)
    <p>
        <button type ="submit">Share</button>       
    </p>
}
</div>
Run Code Online (Sandbox Code Playgroud)

问题在于表单的提交:"提交"按钮调用正确的操作,但使用回发,这会导致我的页面刷新.我需要的是使用ajax发布数据,接收响应,这是另一个插入到的部分视图

我试图用Ajax.ActionLink替换Submit按钮,如下所示

    @Ajax.ActionLink("Share", "Share",
        new Models.MyModel 
            {
                ID = Model.ID,
                EmailAddress = Model.EmailAddress
            }, …
Run Code Online (Sandbox Code Playgroud)

ajax jquery asp.net-ajax asp.net-mvc-3

7
推荐指数
1
解决办法
3万
查看次数

在命名空间System.Web.UI中找不到ScriptManager和UpdatePanel

我有一个MVC4/Web API项目,我创建了一个使用Ajax消耗Web API的测试页面.测试进展顺利,所以我开始在UI上工作.我需要做的一件事是使用从Web API返回的数据填充一些表单控件.我为此使用了JQuery.

现在,当我运行应用程序并提交表单时,我收到一个错误,指示页面已更新:

Invalid postback or callback argument.  Event validation is enabled using <pages
enableEventValidation="true"/> in configuration or <%@ Page EnableEventValidation="true" %>
in a page.  For security purposes, this feature verifies that arguments to postback 
or callback events originate from the server control that originally rendered them.  
If the data is valid and expected, use the ClientScriptManager.RegisterForEventValidation
method in order to register the postback or callback data for validation.
Run Code Online (Sandbox Code Playgroud)

为了解决这个问题,我将表单控件包装在UpdatePanel中并添加了ScriptManager控件.现在我在构建时遇到以下错误:

The type or namespace name 'ScriptManager' does not …
Run Code Online (Sandbox Code Playgroud)

asp.net asp.net-ajax scriptmanager ajaxcontroltoolkit

7
推荐指数
4
解决办法
2万
查看次数

在 ASP.NET MVC 中通过 CancellationToken 中止 AJAX 请求

我有一个与外部资源交互的 ASP.NET MVC 应用程序,并且有一个操作需要很多时间。所以在控制器中我有这样的方法

[HttpPost]
public async Task<JsonResult> SomeMethod(..., CancellationToken token)
{
    await _someService.ExecuteSlowOperationAsync(..., token);
    ...
}
Run Code Online (Sandbox Code Playgroud)

这个缓慢的操作看起来像

public async Task ExecuteSlowOperationAsync(..., CancellationToken token)
{
    return await Task.Run(() => 
    {
       //interacting with external resource
    }, token);
} 
Run Code Online (Sandbox Code Playgroud)

此方法与模态视图相关联,如果请求将花费太多时间,用户可能会决定关闭它。据此,我必须在不等待结果的情况下取消请求,因此在客户端我有类似的代码

...
var request = $.ajax(...);

...

$('#modal').on('hidden.bs.modal', function () {
  request.abort();
});
Run Code Online (Sandbox Code Playgroud)

如果我正确理解这篇文章,取消令牌通过框架模型绑定器与请求绑定,无需对其进行任何操作。当用户关闭模态表单时,在浏览器控制台中,我可以看到请求状态“已取消”,但在服务器端缓慢的操作仍在执行。Aslo我试过

CancellationToken disconnectedToken = Response.ClientDisconnectedToken;            
var source = CancellationTokenSource.CreateLinkedTokenSource(cancellationToken, disconnectedToken);
Run Code Online (Sandbox Code Playgroud)

然后从这个来源拿了令牌,但还是一无所获。

我觉得我错过了一些重要的事情并且对这种情况有误解。任何想法如何使它工作?

c# asp.net-mvc asp.net-ajax task-parallel-library cancellation

7
推荐指数
1
解决办法
1118
查看次数

跨域请求被阻止:同源策略不允许读取远程资源(带有对象的 POST 请求)

我在我的 web api 应用程序中启用了 CORS

var cors = new EnableCorsAttribute("*", "*", "*");
config.EnableCors(cors);
Run Code Online (Sandbox Code Playgroud)

所有的请求都工作正常。但when i pass an object to the post method我明白了:

跨域请求被阻止:同源策略不允许读取位于http://localhost:44367/api/Users/Create的远程资源。(原因:缺少 CORS 标头“Access-Control-Allow-Origin”)。

// WORKING
return axios.post(url)
return axios.get(url)


// NOT WORKING

let model = {
    firstName: 'a',
}

return axios.post(url, model);

// or with configuration

let axiosConfig = {
            headers: {
                'Content-Type': 'application/json;charset=UTF-8',
                "Access-Control-Allow-Origin": true,
                "Access-Control-Allow-Credentials": true,
            }
        };

return axios.post(url, model, axiosConfig);

Run Code Online (Sandbox Code Playgroud)

也与邮递员一起发布工作,具有以下正文

//{
//  "model" : {
//      "name":"firstName"
//  } …
Run Code Online (Sandbox Code Playgroud)

ajax asp.net-ajax httprequest asp.net-web-api2 axios

7
推荐指数
1
解决办法
4万
查看次数