2011-09-23 71 views
1

我正在開發一個MVC項目,當前正在開發的功能是一個DropDownList,每個選項都綁定到一個URL。當用戶選擇一個項目並按提交時,預期的行爲是頁面在同一頁面上加載一個iframe,其中與在所述框架中顯示的選擇相關聯的特定URL。如何在使用Javascript的iframe中設置src

控制器:

Function Configuration() As ActionResult 

     Dim configList As List(Of String) = New List(Of String) 
     configList.Add("10GBaseLX4") 
     configList.Add("10GFC") 
     configList.Add("10GigE") 
     configList.Add("100BaseFX") 

     ViewData("cprotocols") = New SelectList(configList) 
     Return View() 

    End Function 

    Public Function Handle(ByVal cprotocols As String) As String 
     Return "http://www.configlist.com/" + cprotocols + "_Config.xml" 
    End Function 

查看:

<% Using (Ajax.BeginForm("Handle", New AjaxOptions With {.OnComplete = "showConfig"}))%> 
    Select a configuration file to view: <%= Html.DropDownList("cprotocols") %> 
     <br /> 

     <input type="submit" value="Submit" /> 
     <br /> 
     <%End using %> 
     <br /> 
     <script type="text/javascript"> 
     function showConfig(cprotocols) 
     { 
      var param1 = cprotocols; 
      document.write('<iframe src="' + param1 + '"></iframe>'); 
     } 
     </script> 
    </p> 

這就是我必須在視圖中的權利,但什麼最終發生的是:

  1. 出現幀在我按下提交後;理想情況下,我希望框架已經存在於頁面上,然後在點擊提交後將請求的url加載到其中。這可能嗎?

  2. 一個新的頁面彈出,框架在那裏,但我得到一個404「資源不存在」的錯誤(顯然從JavaScript語法錯誤)。我的目標是讓文件請求在與DDL相同的屏幕上加載。

  3. 該URL完全由Handle()操作處理。

回答

0

你最好把它作爲現有HTML的路徑(可能在你的母版頁中),然後在選擇發生時使用JavaScript來設置SRC。

<iframe id="frm1" src="about:blank"></iframe> 

JS:

document.getElemenyById('frm1').src="...." 
+0

我想我仍然在試圖繞到我的頭段是如何通過手柄的'結果()'到腳本(因爲JS設置iframe src基於'Handle()'返回的) – Kevin

+0

Handle在服務器上運行。你需要做的一切都發生在客戶端。讓「showConfig」做你所需要的。如果可以,請留下「處理」。 .NET試圖模糊客戶端和服務器之間的界限,並且經常會對發生什麼事情的時間和地點做出迷惑。這是許多.NET開發人員的禍根。 –