我在Visual Studio 2013中创建了一个MVC3项目,视图引擎是razor。首先,我在视图(cshtml)的@section Scripts{}中编写jquery.ajax,它可以正常工作。但是,当我将脚本分离到.js文件并进行调试时,我会收到错误:
(在IIS Express调试)
IIS 8.0详细错误-404.0-未找到... 更多信息:此错误意味着服务器上不存在该文件或目录。创建该文件或目录,然后再次尝试请求。
..
我的jquery函数(archive.js):
请帮忙...
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>
请帮忙...
'@Url.Action("GetProjects", "Archive")'
是 Razor 代码。Razor 代码不会在外部脚本文件中解析。您需要在主视图中定义一个变量,然后从脚本文件中访问它。 - user3559349var myUrl = '@Url.Action("GetProjects", "Archive")';
,而在脚本文件中则是$.ajax({ url: myUrl , ....
。 - user3559349