在我的_Layout.cshtml页面的head部分,我有这行代码......
<script src="@System.Web.Optimization.BundleTable.Bundles.ResolveBundleUrl("~/Scripts/js")"></script>
我检查了脚本目录,jquery-ui就在那里。我对MVC很新,特别是MVC4。我和3合作过,我不相信Bundles与我记忆中的任何事情有关,或者至少使用过。从我得到的,它将所有脚本捆绑成一个紧凑的文本格式,取出空格和诸如此类的东西。所以我假设jquery-ui将被添加到每个页面,因为它是一个共享页面,如Web窗体中的母版页。
现在在我的Index.cshtml文件中使用了我在顶部的共享布局页面。
$(function () {
$('#DateOfBirth').datepicker();
});
我在我的Index.cshtml文件中添加了一个包含此代码的部分视图。
@Html.Partial("_SignUp", Model)
部分视图包含我正在尝试将其添加到的字段。不幸的是,它没有将datepicker添加到type = text的输入字段中,是的,该字段的id =“#DateOfBirth”。这是什么交易?
编辑:我收到此错误 - “未捕获的TypeError:对象[对象对象]没有方法'datepicker'
答案 0 :(得分:4)
我看不出你的代码有什么问题,我无法重现这个问题(ASP.NET MVC 4 Beta)。以下工作对我来说很好:
添加视图模型:
public class MyViewModel
{
public DateTime DateOfBirth { get; set; }
}
HomeController中:
public class HomeController : Controller
{
public ActionResult Index()
{
return View(new MyViewModel
{
DateOfBirth = DateTime.Now
});
}
}
Index.cshtml
:
@model MyViewModel
<script type="text/javascript">
$(function () {
$('#DateOfBirth').datepicker();
});
</script>
@Html.Partial("_SignUp", Model)
_SignUp.cshtml
@model MyViewModel
@Html.EditorFor(x => x.DateOfBirth)
结果:
所以我猜现在问题变成了,你做了什么不同的事情?
答案 1 :(得分:4)
我看到的情况是,如果我将javascipt代码从视图中删除
<script type="text/javascript">
$(function () {
$('#StartDateTime').datepicker();
});
</script>
并将其放在
下面的_Layout.cshtml中@Scripts.Render("~/bundles/jquery","~/bundles/jqueryui")
@RenderSection("scripts", required: false)
行(注意我必须包含jqUi包)它工作很快!!!
但是我希望它以我希望它工作的方式工作。所以在脚本完全加载之前就会触发文档就绪?
更新: 只需用@section scripts {}包围你的脚本,这将在页面底部的jquery.js文件下面显示。
@section scripts {
<script type="text/javascript">
$(function () {
// Accordion
$("#accordion").accordion({ header: "h3", active: 0, fillSpace: false });
$("#bidTabs").tabs();
$("#jobTabs").tabs();
$("#settingsTabs").tabs();
});
</script>
}