我在 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/