2012-04-03 59 views
2

我在包含Javascript的對話框中加載部分視圖。當部分視圖顯示在對話框中時,部分視圖顯示出來,但是部分視圖中的任何Javascript都不存在。包含Javascript代碼的JQuery對話框加載頁面

我的問題:如何加載部分視圖上的Javascript?

這裏是我的JavaScript文件

$(document).ready(function() 
{ 
    BindEvents(); 
}); 

function BindEvents() 
{ 
    $('#Reassign').bind('click', function (event, ui) { 
    GetReassign(); 
    return false; 
    }); 

function GetReassign() { 
    var checkeditems = $('input:checkbox[name="selectedObjects"]:checked').map(function() { return $(this).val() }).get().join(","); 
    if (checkeditems) 
    { 
     $("#DialogBox").dialog({ 
      width: 525, 
      modal: true, 
      draggable: false, 
      resizable: false, 
      open: function (event, ui) { 
       $(this).load('/ControllerName/PartialView', function() { 
        var checkeditems = $('input:checkbox[name="selectedObjects"]:checked').map(function() { return $(this).val() }).get().join(","); 
        $('input.tasks').val(checkeditems); 
       }); 
      }, 
      buttons: { 
       "Cancel": function() { 
        $(this).dialog("close"); 
       } 
      } 
     }); 
    } 
} 

} 

這裏是我的局部視圖:

@model SFB.SVP2.Objects.InterviewFollowup 
@using SVP2UI.Helpers; 

<script type="text/javascript"> 

    var ddlMailCodes; 
    var ddlEmployees; 

    function pageLoad() { 
     ddlEmployees = $get("AssignedTo"); 
     ddlMailCodes = $get("MailCodes"); 
     $addHandler(ddlMailCodes, "change", bindOptions); 
     bindOptions(); 
    } 

    function bindOptions() { 
     ddlEmployees.options.length = 0; 
     var MC = ddlMailCodes.value; 
     if (MC) { 
      Sys.Net.WebServiceProxy.invoke(
       "/Services/BranchService.asmx", 
       "Employees", 
       false, 
       { MC: MC }, 
       bindOptionResults 
      ); 
     } 
    } 

    function bindOptionResults(data) { 
     var newOption; 
     for (var k = 0; k < data.length; k++) { 
      newOption = new Option(data[k].LastName + ", " + data[k].FirstName, data[k].ADUser); 
      ddlEmployees.options.add(newOption); 
     } 
    } 

</script> 

@using (Html.BeginForm("ReassignPost", "InterviewFollowup")) 
{ 
    @Html.ValidationSummary(true) 
    @Html.AntiForgeryToken() 

<fieldset> 
    <legend><strong>Re-Assign Task</strong></legend> 

    <input type="hidden" value="" id="tasks" class="tasks" name="tasks" /> 

    <div style="display: table; float:left; position:relative; width: 50%"> 
     <div class="editor-label"> 
      Location: 
     </div> 
     <div class="editor-field"> 
      @Html.DropDownList("MailCodes", (IEnumerable<SelectListItem>)ViewData["MailCode"], "-- Select --") 
      @Html.ValidationMessage("MailCodes") 
     </div> 
    </div> 

    <div style="display: table; float:right; position:relative; width: 50%"> 
     <div class="editor-label"> 
      @Html.LabelFor(model => model.AssignedTo) 
     </div> 
     <div class="editor-field"> 
      <select name="AssignedTo" id="AssignedTo"></select> 
     </div> 
    </div> 

    <div class="editor-label"> 
     Notes: 
    </div> 
    <div class="editor-field"> 
     <input type="text" name="Notes" id="Notes" /> 
     @Html.ValidationMessage("Notes") 
    </div> 

    <p> 
     <input type="submit" value="Submit" /> 
     <input type="button" value="Cancel" /> 
    </p> 

</fieldset> 
} 
+0

添加了部分視圖@Dismissile – Turp 2012-04-03 19:19:18

+0

我很難理解你在問什麼。第一個JavaScript與什麼有關? – Dismissile 2012-04-03 19:33:19

+0

單擊按鈕時,第一個Javascript將加載JQuery對話框。 (我沒有用按鈕顯示主視圖。)當你點擊按鈕時,對話框加載。 – Turp 2012-04-03 19:40:52

回答

1

我建議你來外部所有的JavaScript到一個單獨的js文件。混合JavaScript和標記是不好的。一旦你外在的,你可以調用任何你喜歡的功能,一旦你顯示部分:

$("#DialogBox").dialog({ 
    width: 525, 
    modal: true, 
    draggable: false, 
    resizable: false, 
    open: function (event, ui) { 
     $(this).load('/ControllerName/PartialView', function() { 
      // OK, at this stage the partial is injected into the DOM 
      // here you can call whatever function you like 
      // for example the pageLoad(); function 

      var checkeditems = $('input:checkbox[name="selectedObjects"]:checked').map(function() { return $(this).val() }).get().join(","); 
      $('input.tasks').val(checkeditems); 
     }); 
    }, 
    buttons: { 
     "Cancel": function() { 
      $(this).dialog("close"); 
     } 
    } 
}); 

哦,有什麼理由仍然使用MicrosoftAjax腳本?那些與jQuery相比已經過時了很久,我已經很長時間看到有人使用它們了。您可以完美地使用jQuery調用啓用腳本的.ASMX服務。

相關問題