5

JQueryUI の datepicker を使用するように構成された Html.TextBox を含む ASP.NET MVC 部分ビューがあります。これは、スタイルが .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>

アクション リンク、clickon が Controller Action を呼び出して PartialView を返すと、OnSuccess で呼び出された JavaScript が起動しますが、以前は document.read 関数によってフックされていたものは何も起動しません。すべてのスクリプトは別のファイルにあり、マスター ページで参照されます。

<%= 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ライブをチェックしてください

于 2009-11-03T14:15:14.363 に答える
1

私にとってOnSuccessうまくいくのは、AjaxOptions のプロパティを使用することです。したがって、コードは次のようになります。

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 に答える