【发布时间】:2011-04-04 09:12:48
【问题描述】:
我有一个简单但非常烦人的问题。我有一个使用 Razor 作为视图引擎的 ASP.NET MVC3 应用程序。
我有两个从局部视图调用的脚本,如果我将整个代码放在 _layout 页面中,它们会很好地工作。如果我将脚本放在外部文件中并引用它们,它们就不起作用。怎么可能?我已经检查了基本问题,例如文件位置和脚本标签的语法。
这是 JavaScript 代码:
$(document).ready(function () {
$('#Year').change(function () {
var selectedYear = $(this).val();
if (selectedYear != null && selectedYear != '') {
$.getJSON('@Url.Action("Months", "Home")', { year: selectedYear }, function (months) {
var monthsSelect = $('#Month');
monthsSelect.empty();
$.each(months, function (index, month) {
monthsSelect.append($('<option/>', {
value: month.value,
text: month.text
}));
});
});
}
}).change();
});
这里是 _Layout 文件中的参考:
<script src="../../Scripts/CascadeDropDownList.js" type="text/javascript"></script>
这是将 Json 结果返回给视图的操作方法:
public ActionResult Months(int year)
{
if (year == DateTime.Now.Year)
{
return Json(
Enumerable.Range(1, (DateTime.Now.Month -1)).Select(m => new
{
value = m,
text = CultureInfo.CurrentCulture.DateTimeFormat.GetMonthName(m)
}),
JsonRequestBehavior.AllowGet
);
}
return Json(
Enumerable.Range(1, 12).Select(m => new
{
value = m,
text = CultureInfo.CurrentCulture.DateTimeFormat.GetMonthName(m)
}),
JsonRequestBehavior.AllowGet
);
}
堆栈:
[ArgumentException: Illegal characters in path.]
System.IO.Path.CheckInvalidPathChars(String path) +126
System.IO.Path.Combine(String path1, String path2) +38
System.Web.Configuration.UserMapPath.GetPhysicalPathForPath(String path, VirtualDirectoryMapping mapping) +114
System.Web.Configuration.UserMapPath.GetPathConfigFilename(String siteID, VirtualPath path, String& directory, String& baseName) +82
System.Web.Configuration.UserMapPath.MapPath(String siteID, String path) +58
System.Web.Hosting.HostingEnvironment.MapPathActual(VirtualPath virtualPath, Boolean permitNull) +301
System.Web.Hosting.HostingEnvironment.MapPathInternal(VirtualPath virtualPath, Boolean permitNull) +51
System.Web.CachedPathData.GetPhysicalPath(VirtualPath virtualPath) +39
System.Web.CachedPathData.GetConfigPathData(String configPath) +704
System.Web.CachedPathData.GetVirtualPathData(VirtualPath virtualPath, Boolean permitPathsOutsideApp) +110
System.Web.HttpContext.GetFilePathData() +36
System.Web.HttpContext.GetConfigurationPathData() +26
System.Web.Configuration.RuntimeConfig.GetConfig(HttpContext context) +43
System.Web.Configuration.CustomErrorsSection.GetSettings(HttpContext context, Boolean canThrow) +41
System.Web.HttpResponse.ReportRuntimeError(Exception e, Boolean canThrow, Boolean localExecute) +101
System.Web.HttpRuntime.FinishRequest(HttpWorkerRequest wr, HttpContext context, Exception e) +397
</pre></code>
提前致谢
【问题讨论】:
-
“不工作”是什么意思?包含错误和/或代码会有所帮助。
-
它没有给出任何错误,只是没有执行。我现在正试图用 Fiddler 整理一些东西,以防万一发布信息。感谢您的帮助
标签: c# javascript jquery asp.net-mvc-3