【发布时间】:2013-04-25 13:20:37
【问题描述】:
我正在使用 EditorTemplates 文件夹和以下 DateTime.cshtml 将日期选择器 (jQuery UI) 添加到所有日期时间字段:
@model Nullable<System.DateTime>
@if ( Model.HasValue ) {
@Html.TextBox( "" , String.Format( "{0:yyyy-MM-dd HH:mm}" , Model.Value ) , new { @class = "textbox" , @style = "width:400px;" } )
}
else {
@Html.TextBox( "" , String.Format( "{0:yyyy-MM-dd HH:mm}" , DateTime.Now ) , new { @class = "textbox" , @style = "width:400px;" } )
}
@{
string name = ViewData.TemplateInfo.HtmlFieldPrefix;
string id = name.Replace( ".", "_" );
}
<script type="text/javascript">
$(document).ready(function () {
alert("adding date picker");
$("#@id").datepicker
({
dateFormat: 'dd/mm/yy',
showStatus: true,
showWeeks: true,
highlightWeek: true,
numberOfMonths: 1,
showAnim: "scale",
showOptions: {
origin: ["top", "left"]
}
});
});
</script>
但是,如果我将 jQuery 脚本等添加到页面底部,现在建议是最佳做法 - 上面的代码内联显示 - 在 jQuery 脚本上方 - 因此不会运行:
主 CSHTML Razor 视图:
@RenderBody()
<hr>
<footer>
<p>© Company @System.DateTime.Now.ToString("yyyy")</p>
</footer>
</div>
@Scripts.Render("~/js")
@Scripts.Render("~/jqueryui")
@RenderSection("Scripts", required: false)
</body>
我是否应该绕过最佳实践并将 jQuery 脚本添加到页面顶部 - 还是有更简单的方法来完成这项工作,同时仍遵循最佳实践?
谢谢,
标记
【问题讨论】:
-
@Scripts.Render 应该在 head 标签内,不是吗?
-
你试过用window.onload = function{...};而不是 document.ready ?或者选择 Kenneth 的答案,这在你的情况下似乎更准确。
-
@MelanciaUK:脚本不应该放在 head-tag 中,这会减慢页面渲染速度。
-
@roasted:如果他使用 window.onload,那么他的脚本将在严格必要的时候执行
标签: jquery asp.net asp.net-mvc jquery-ui