5

我有一个 ASP.NET MVC 部分视图,其中包含一个配置为使用来自 JQueryUI 的日期选择器的 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>

我很感激这方面的任何帮助。

4

2 回答 2

3

如果元素是在document.ready你应该重新匹配元素到 jQuery 之后创建的。

查看jQuery Live

于 2009-11-03T14:15:14.363 回答
1

对我有用的是使用OnSuccessAjaxOptions 中的属性。所以,你的代码可能是这样的:

using (Ajax.BeginForm("AddEditClaim", "Claim", ajaxOptions, new { @name = "ClaimControl", @id = "ClaimControl", OnSuccess="the_javascript_function_below" })

the_javascript_function执行此操作的函数的名称在哪里:

$(".datepicker").datepicker();
于 2010-09-08T12:41:01.977 回答