2009-03-26 5 views
5

का उपयोग करते समय काम नहीं कर रहा है मेरे पास एक एएसपी.नेट एमवीसी आंशिक दृश्य है जिसमें एक HTML.TextBox है जो JQueryUI से डेटपिकर का उपयोग करने के लिए कॉन्फ़िगर किया गया है। यह सुनिश्चित करके किया जाता है कि शैली .datepicker पर सेट है। यह सब ठीक काम किया। हालांकि मैंने अपने फॉर्म अजाक्स में बदल दिए हैं। बेजिनफॉर्म और इसमें एक अजाक्स शामिल है। एक्शनलिंक जो लिंक पर क्लिक करने के बाद इसे प्रदर्शित करता है। इसे जोड़ने के बाद डेटपिकर प्रदर्शित नहीं होता है। असल में कोई जावास्क्रिप्ट जो पहले काम नहीं करता था अब भी नियंत्रक से आंशिक दृश्य लौटने के बाद भी बुलाया जा रहा है। भले ही मैं आंशिक दृश्य में जावास्क्रिप्ट/JQuery डालता हूं, फिर भी यह इसका उपयोग नहीं करता है। मैं वास्तव में उलझन में हूं, क्या कोई मदद कर सकता है?एएसपी.नेट एमवीसी jQueryUI डेटपिकर AJAX.BeginForm

उदाहरण नीचे

<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 नियंत्रक कार्रवाई PartialView, जावास्क्रिप्ट onSuccess आग लेकिन कुछ नहीं पर बुलाया वापस जाने के लिए कहता है, कि पहले 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> 

मैं इस पर किसी भी मदद की सराहना करते हैं करने के लिए सेट के साथ पाठ बॉक्स को दर्शाता है।

उत्तर

3

यदि तत्व document.ready के बाद बनाया गया है तो आपको तत्व को jQuery से दोबारा मेल करना चाहिए।

बाहर jQuery Live

+0

अधिक विस्तार उदाहरण प्रदान करें। – Nario

+0

मैं नारियो से सहमत हूं, इस तरह का एक संदर्भ होना अच्छा है, लेकिन एक स्पष्ट उदाहरण के लिए बहुत बेहतर है। –

1

चेक मेरे लिए क्या काम करता है AjaxOptions से OnSuccess संपत्ति का प्रयोग है। तो, अपने कोड इस तरह हो सकता है:

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

जहां the_javascript_function एक समारोह है कि यह करता है का नाम है:

$(".datepicker").datepicker(); 
+0

मैं वर्तमान में एक ही चीज़ करने की कोशिश कर रहा हूं। लेकिन jquery को मेरे टेक्स्टबॉक्स को प्रतिस्थापित div में नहीं लगता है। इस पर कोई लीड? –