Частичное представление MVC2 ajax не регистрирует jquery-скрипты - PullRequest
0 голосов
/ 16 января 2012

У меня есть страница, на которой у меня есть вызов ajax для отображения формы.Мой код работает, когда зарегистрировать код для формы, но не от обратной передачи (ошибка проверки в контроллере).Любая идея, как это исправить?

Моя страница контейнера имеет:

Сценарии:

<%= Html.JQuery() %>
     <script src="../../../../Scripts/jquery.ui.core.js" type="text/javascript"></script>
     <script src="../../../../Scripts/jquery.ui.datepicker.min.js" type="text/javascript"></script>
     <script src="../../../../Scripts/MicrosoftAjax.js" type="text/javascript"></script>
     <script src="../../../../Scripts/MicrosoftMvcAjax.js" type="text/javascript">/script>
     <script src="../../../../Scripts/MicrosoftMvcValidation.js" type="text/javascript"></script>
     <script type="text/javascript">
       function registerStuff() {
             //this gets triggered when onsuccess is called
             $("#date").datepicker({ dateFormat: 'dd/mm/yy' });
             $("#sla").datepicker();
         }

     </script>

Содержимое:

 <%= Ajax.AjaxButton("New action", "CreateWorkFlowAction", new {
 controller = "CaseWorkFlow" }, new AjaxOptions() { UpdateTargetId =
 "divTableContainer", HttpMethod = "Get", OnSuccess =
 "registerStuff"})%>

      <div id="divTableContainer">
response will appear here
</div>

моя форма выглядит как

<script type="text/javascript">
    function RegisterJs() {
        $("#date").datepicker({ dateFormat: 'dd/mm/yy' });
        $("#sla").datepicker({ dateFormat: 'dd/mm/yy' });
    }
</script>
<% Html.EnableClientValidation(); %>
<% using (Ajax.BeginForm("CreateWorkFlowAction", new AjaxOptions() { UpdateTargetId = "divTableContainer", HttpMethod = "Post" }))
   {%>
<%= Html.ValidationSummary() %>

<fieldset>
    <div>
        <label for="title">
            Title</label>
        <%= Html.TextBoxFor(x=>x.Title) %>
    </div>
    <div>
        <label for="SLA">
            SLA(Due Date)</label>
        <%= Html.TextBoxFor(x => x.SelectSlaDate, new { id = "sla", @Value = string.Empty} )%>
    </div>
    <div>
        <label for="date">
            Date</label>
        <%= Html.TextBoxFor(x => x.SelectDate, new { id = "date", @Value = string.Empty})%>
    </div>
    <div>
        <button type="submit">Save action</button> 
    </div>
</fieldset>
<% } %>

проблема в

1 Ответ

0 голосов
/ 19 января 2012

Я нашел решение моего вопроса.

Я должен перерегистрировать свой javascript внутри частичного представления.

это означает, что мне пришлось обновить сценарии регистрации на родительской странице.к которому я добавлю частичное представление.

и поэтому, если моя страница просмотра содержит частичное представление, мне пришлось переместить

   function registerStuff() { 
             //this gets triggered when onsuccess is called 
             $("#date").datepicker({ dateFormat: 'dd/mm/yy' }); 
             $("#sla").datepicker(); 
         } 

на страницу индекса.После успешного вызова этой функции "registerStuff" из моего oncomplete, и после этого все работает как charm

надеюсь, это вам тоже поможет

...