【问题标题】:Ajax.BeginForm doesn't post properlyAjax.BeginForm 未正确发布
【发布时间】:2011-05-05 21:09:28
【问题描述】:

我有一个似乎无法满足的简单要求:我有一个产品页面。产品有供应商,供应商输入是一个带有自动完成功能的文本字段。如果用户输入数据库中不存在的供应商,我需要添加它。要添加它,我在页面上有一个 DIV,我 .load() 调用了我的 /Vendor/Create 控制器方法。该方法的视图使用:

@using (Ajax.BeginForm("Create", "Vendor", new AjaxOptions {
     UpdateTargetId = ViewBag.TargetId,
     HttpMethod = "Post", 
     OnSuccess="VendorCreated", 
     OnComplete="alert('success')"
})) {

它应该通过 ajax 发布我的表单,完成后调用 Javascript。我遇到的问题是,在提交时,我的整个页面都会刷新,这样当我开始使用 /Product/Create 时,我就会得到 /Vendor/Create。此外,不会调用 OnSuccess 和 OnComplete。

我在这里做错了什么?

【问题讨论】:

    标签: ajax asp.net-mvc-3 post razor


    【解决方案1】:

    确保您已在页面中包含以下脚本:

    jquery-1.5.1.js
    jquery.unobtrusive-ajax.js
    

    并且在 web.config 中启用了不显眼的 javascript:

    <add key="UnobtrusiveJavaScriptEnabled" value="true" />
    

    【讨论】:

    • 哦...我明白了。我的项目有 -1.4.4 并且我没有 jquery.unobtrusive-ajax.js 但我有 MicrosoftAjax.js 和 MicrosoftMvcAjax.js ......它们是一样的吗?
    • 我查看了这两个文件,但都不包含 BeginForm... 一个相关问题:我读过使用 CDN 是一件好事,但这意味着脚本文件夹中没有脚本.有没有办法只做一个引用,让脚本看起来像是在您的项目中,但实际上它们只是从 CDN 中获取的?
    • @ekkis,您可以安全地从您的 ASP.NET MVC 3 项目中删除 MicrosoftAjax.jsMicrosoftMvcAjax.js。默认情况下,ASP.NET MVC 3 使用 jQuery。所以只留下我在回答中提到的两个脚本(您可以将 jquery-1.5.1.js 替换为您实际使用的版本)并在 web.config 中启用不显眼的 javascript。
    猜你喜欢
    • 2016-09-02
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-06-28
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-12-09
    相关资源
    最近更新 更多