c# - 404 未找到 Ajax jquery MVC

标签 c# jquery ajax asp.net-mvc razor

我在 Visual Studio 2013 中创建了一个 MVC3 项目。 View 引擎是 razor。首先我在 @section Scripts {} 中编写 jquery.ajax in view(cshtml) 它工作正常。但是我在 .js 文件中分离脚本并调试我得到错误: (调试 IIS Express)

IIS 8.0 详细错误 - 404.0 - 未找到 ... 更多信息:此错误表示服务器上不存在该文件或目录。创建文件或目录并再次尝试请求。
..

我的 jquery 函数(archive.js):

jQuery.AjaxGetProjects = function (dropdownId, detailDropDownId, authorized) {

var projectId = $(dropdownId).val();
if (projectId != null && projectId != '') {
    var url =
    $.ajax({
        type: "POST",
        url: '@Url.Action("GetProjects", "Archive")',
        data: {
            'projectId': projectId,
            'authorized': authorized
        },
        success: function (departman) {
            var length = 0;
            $(detailDropDownId).empty();
            $.each(departman, function (index, proje) {
                length = length + 1;
                $(detailDropDownId).append($('<option/>', {
                    value: proje.Value,
                    text: proje.Text,
                    selected: proje.Selected
                }));
            });
            if (length == 2) {
                $(detailDropDownId).trigger('change');
            }

        },
        error: function (xhr, ajaxOptions, thrownError) {
            // bu kısımda eğer ajax işlemi başarısız ise
            // hata mesajı verebiliriz.
            alert(xhr.responseText);
        }
    });
}

Controller :

public class ArchiveController : BaseController
{
   ...
   public ActionResult GetProjects(int projectId, bool authorized)
    {

        IArchive arch = WcfServiceHandler.GetDmsService<IArchive>();

        List<Poco> list = arch.GetProjects(UserManager.GetUserInfo(), projectId);
        var t = MvcHelper.GetDropDownList<Poco>(list, "NAME", "ID", "");
        return Json(t, JsonRequestBehavior.AllowGet);
    }

我试过了但没有用(我收到一个新错误:找不到资源):

  <system.webServer>
<validation validateIntegratedModeConfiguration="false" />
<modules runAllManagedModulesForAllRequests="true" />
<handlers>
  <remove name="ExtensionlessUrlHandler-Integrated-4.0" />
  <add name="ExtensionlessUrlHandler-Integrated-4.0" path="*." verb="*" type="System.Web.Handlers.TransferRequestHandler" resourceType="Unspecified" requireAccess="Script" preCondition="integratedMode,runtimeVersionv4.0" />
</handlers>

请帮助..

最佳答案

您不能在 JavaScript 文件中使用 Razor(除非您使用类似 RazorJS 的扩展)。如果您在浏览器开发工具中查看您的 JS,您会看到输出的 url 是:

url: '@Url.Action("GetProjects", "Archive")',

什么时候应该:

url: www.yoursite.com/Archive/GetProjects

要修复它,您可以从您的 View 调用该 JS 的方法并传入 URL,例如:

查看:

<script>
    callMethod('@Url.Action("GetProjects", "Archive")');
</script>

那么你的 JS 将是:

function callMethod(url) {
   ....

否则,您将其硬编码为:

url: '/Archive/GetProjects'

但要小心,如果您要部署到子目录中的站点,该链接将无效。

关于c# - 404 未找到 Ajax jquery MVC,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30662328/

相关文章:

javascript - 如何通过用户输入更改按钮值

javascript - javascript 上的 setTimeout() 用于基于表单提交的自定义 URL

javascript - 点击函数内的ajax请求干扰执行

c# - Windows 双击持续时间

c# - 以编程方式访问 TFS 历史记录

c# - 在.NET Core应用程序中可靠地终止通过cmd进程启动的node.js进程

jquery 仅将属性应用于第一个元素?

javascript - 将 POST 更改为 GET。现在 Ajax 返回多个帖子

javascript - 为什么这个 jQuery 插件(Tooltipster)的 Ajax 内容只有在鼠标悬停 2 次后才显示?

c# - 制作 View 模型错误