我有一个主视图,其主布局包含所有javascripts,即jQuery DatePicker控件等。
在这个主视图中,我使用包含局部视图的Ajax.BeginForm(.....)。在我的控制器中,如果验证失败,则返回该部分视图。 (也已经设置了Ajax中的UpdateTargetId,该部分的Id包含该部分视图。)
我的错误项目符号正确显示。但是我发现我之后似乎松了javascript。例如,我的日历/日期选择器停止工作,它是一个普通的输入框。
可能是什么原因?
非常感谢!!
以下是代码:
我的主视图包含一个Ajax表单。里面有2个局部视图。第二个有datepicker输入。
@using (Ajax.BeginForm("ActionXXX", "ControllerYYY", new AjaxOptions
{
HttpMethod = "POST",
UpdateTargetId = "main"
}))
{
<section id="main" class="....." data-section="....." data-step="">
@Html.Partial("ValidationSummary")
@Html.Partial("SharedPartialView", Model, new ViewDataDictionary {.....})
</section>
}
JS包含在主文件中。 (主视图有此布局)
<script type="text/javascript">
$('input.date').watermark('dd/mm/yyyy');
$('input.date').datepicker({
dateFormat: "dd/mm/yy",
maxDate: 0,
onClose: function () { $(this).valid(); }
});
$('input.time').watermark('hh:mm');
$('input.time').timeEntry();
</script>
控制器只是:当验证失败时,返回部分视图(“SharedPartialView”)
if (Request.IsAjaxRequest())
return PartialView("SharedPartialView", ciShareModel); //model
这些日期选择器和水印jquery在页面初始加载时起作用....
答案 0 :(得分:3)
加载局部视图后,您是否再次运行javascript? - 脚本块仅在页面加载时运行,因此主页面中的脚本仅在加载主页时运行。当你进行ajax调用时,你需要单独为部分视图运行任何javascript。
将此代码放在局部视图中:
<script type="text/javascript">
$(document).ready(function() {
$('input.date').datepicker({
dateFormat: "dd/mm/yy",
maxDate: 0,
onClose: function () { $(this).valid(); }
});
});
</script>
虽然 - 我建议不要使用$('input.date')
,而是为您的输入元素提供唯一的ID /类,否则您将重置用户可能在页面上的其他“input.date”字段中输入的任何数据。用于例如$('input.partialView_Date)
并在部分视图中调用您的输入字段:<input type="text" class="partialView_Date" />