MVC2 ajax局部视图不注册jquery脚本

时间:2012-01-16 11:09:00

标签: asp.net-mvc-2 asp.net-ajax

我有我的页面,我有一个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 :(得分:0)

我找到了问题的解决方案。

我必须在局部视图中重新注册我的javascript。

这意味着我必须将添加注册脚本更新到我将插入部分视图的父页面。

因此如果我的视图页面包含部分视图我必须移动

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

到索引页面。 成功之后从我的oncomplete中调用此函数“registerStuff”, 然后一切都像魅力一样工作

希望这也对你有帮助