【问题标题】:Calling PartialView Doesn't work on External Network调用 PartialView 在外部网络上不起作用
【发布时间】:2017-05-30 09:05:11
【问题描述】:

我正在尝试从 JQuery 加载函数加载部分视图

上面基本上是从代码控制器调用加载动作

这在访问内部网络上的 Web 应用程序时有效,但在从 Internet 访问时无效。以下是我在调查中所做的步骤:

  • 在 IIS (web.config) 和代码 (AspNetCore.Cors) 上启用 CORS
  • 使用 JQUERY 启用 CORS(使用 crossDomain:true)
  • 在 Windows Server 上启用网络发现
  • 我什至尝试将 _Load.cshtml 放入 SHARED 文件夹中,并在没有路径的情况下直接调用加载,但仍然不起作用。

这个问题与我发布的问题相关,但 CORS 建议不起作用。My Other Question

如上所述,除了使用负载之外,我尝试使用 $.ajax 并输出错误,但我得到了

readystate 0 status 0 statustext error ajax

非常感谢。

------------------更新----------

如前所述,这是直接调用 URL

------------------更新 2----------------------

从 $.ajax 调用时,我输入了 e.preventDefault();

在 Chrome 中显示错误

在 IE 中显示错误

【问题讨论】:

  • 您的调用页面(您在其中为 ajax 编写了 jquery 代码)和操作方法 URL(您的 baseURL 变量)是否在同一个域中?如果两者都在同一个域中,那么您无需担心 CORS。当您从浏览器而不是 ajax 直接访问该 URL (baseURL + /Codes/Load?id=xxxxx) 时会发生什么?会报错吗?
  • @Kiran,是的,它们都在同一个域中。当我直接运行url时,我可以看到没有css格式的正确结果。这适用于内部和外部网络。
  • 您根本不需要使用 baseUrl,因为它们都在同一个域中。您可以直接使用 .load("/Code/Load?id=.....");。您还可以确保#cmbGroup 更改事件没有在 ajax 调用之后立即启动回发(或重定向到其他 URL)吗?
  • @Kiran,当我不使用 baseURL 变量时,由于虚拟目录,它不起作用。
  • 请分享从javascript调用开发工具栏的截图

标签: jquery asp.net-mvc asp.net-mvc-partialview


【解决方案1】:

感谢基兰的帮助。我想通了。

来自外部的 URL 中包含端口号。问题是当它调用控件和操作时,URL 不包含端口号。该代码现在包含端口号,但必须对其进行硬编码。我试过使用

@HttpContext.Current.Request.Url.Port

但它一直显示 80 而不是实际端口。

【讨论】:

    猜你喜欢
    • 2022-01-19
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-11-04
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多