我有一个ASP.NET MVC部分视图,其中包含一个配置为使用
JQueryUI中的datepicker的Html.TextBox.这是通过确保样式设置为.datepicker来完成的.这一切都很好.但是我已经将表单更改为Ajax.BeginForm并包含一个Ajax.ActionLink,它在单击链接后显示它.由于添加此日期选择器不会显示.实际上,从控制器返回部分视图后,现在甚至没有调用以前工作过的
JavaScript.即使我在部分视图本身中使用JavaScript / JQuery,它仍然不使用它.我真的很困惑,有人可以帮忙吗?
示例如下所示
<div id="claims"> <div id="divViewClaims"> <% Html.RenderPartial("ViewClaim",Model.Claims ?? null); %> </div> <br /><br /> <div id="claim"> <% Html.RenderPartial("AddEditClaim",new Claim()); %> </div> </div>
Action Link,当clickon调用Controller Action返回PartialView时,在OnSuccess上调用的JavaScript触发,但没有别的,以前是由document.ready函数连接的.我的所有脚本都是单独的文件,并在母版页中引用.
<%= Ajax.ActionLink(string.Format("Add A{0} Claim",Model.Count > 0 ? "nother" : string.Empty),"AddClaim","Driver",new AjaxOptions { HttpMethod = "GET",UpdateTargetId = "claim",OnSuccess="showAddClaim" },new { @class = "ControlLink" })%>
控制器动作
public ActionResult AddClaim() { return PartialView("AddEditClaim",new Claim()); }
部分视图,显示样式设置为datepicker的文本框
<% var ajaxOptions = new AjaxOptions { HttpMethod = "POST",UpdateTargetId = "divViewClaims",InsertionMode = InsertionMode.Replace,OnSuccess="hideAddClaim" }; %> <% using (Ajax.BeginForm("AddEditClaim","Claim",ajaxOptions,new { @name = "ClaimControl",@id = "ClaimControl" })) { %> <fieldset> <legend><%= Model.Id==0?"Add":"Edit" %> Claim</legend> <p> <label for="Title">Claim Date</label> <%= Html.TextBox("Date",Model.Date.ToString().TrimEnd('0',':',' ') ?? "",new { @class = "datepicker" })%> </p>
我很感激任何帮助.
解决方法
如果元素是在document.ready之后创建的,那么你应该将元素重新匹配到jQuery.
查看jQuery Live