2012-07-06 48 views
0

我有一個局部視圖,用戶可以在瓶坯的搜索,並且搜索結果顯示在一個選擇框所示。在我的主視圖中,我有一個應該在按下選擇按鈕後顯示搜索結果的部分。當我點擊選擇按鈕是眼下加載正確的信息到我的主視圖正確的模型,但主要觀點並沒有改變。當我點擊刷新時,頁面正確更新。在插件視圖中單擊按鈕時,如何自動更新頁面?重裝主視圖被點擊

我在我的主要應用程序的主視圖(Index.vbhtml)部分:

@Section CUInfo 

Credit Union Name: @Model.CUInfo.CUName 

end section 

這裏是我的插件我的控制器方法:

Function ChangeCUInfo(strCUName As String) As ActionResult 
     m_hostApp.CUInfo.CUName = strCUName 
     m_hostApp.blnPluginRefreshButtonPressed = True 
     Return View("Index", m_hostApp) 
    End Function 

我試圖設置一個布爾值在hostApp對象中,然後在我的主剃刀視圖中調用此函數(如果它爲真):

@code 
    If Model.blnPluginRefreshButtonPressed = True Then 


     @<script type="text/javascript"> 
       $(function() { 
        window.location.reload(); 
       }); 
     </script> 


     End If 

     Model.blnPluginRefreshButtonPressed = False 
End Code 

編輯:

JS功能,點擊選擇按鈕時調用:

function loadCU(CUInfo) { 
      strCU = CUInfo.split('|'); 
      strCUName = strCU[0];   
      $.ajax({ 
      type: "POST", 
      url: "/CUContractNumberPlugin/ChangeCUInfo", 
      data: { "strCUName": strCUName } 
     }); 
     } 

形式,是在插件視圖中使用:

@Using (Html.BeginForm("ChangeCUInfo", "CUContractNumberPlugin")) 
       @<div id="LogoSigSearch" style="height:300px;width:500px;position:relative;"> 



    <span style="display:inline-block;height:20px;width:166px;position:absolute;top:35px;left:5px;">Credit Union Name</span> 


    <br /> 
    @Html.TextBox("strCUName") 
    <input type="submit" name="LogoSigSearch$ctl02" value="Search" id="LogoSigSearch_ctl02" tabindex="3" style="width:60px;position:absolute;top:5px;left:352px;" /> 






    <input name="LogoSigSearch$ctl05" type="button" onclick="javascript:clearSearch()" value="Clear" style="position:absolute;top:35px;left:352px;width:60px;" /> 

    <select size="4" name="LogoSigSearch$ctl06" id="LogoSigSearch_ctl06" tabindex="5" style="height:230px;width:342px;position:absolute;top:65px;left:5px;"></select> 

    <input type="button" name="SelectCU" value="Select" onclick="javascript:loadCU(LogoSigSearch_ctl06.options[LogoSigSearch_ctl06.selectedIndex].value)" tabindex="4" style="width:60px;position:absolute;top:65px;left:352px;" /> 
     </div> 
    End Using 
+0

是否要重新加載整個頁面,或只是在搜索結果中的主要觀點?無論哪種情況,您都可以通過向按鈕點擊添加事件處理程序來實現jQuery。 – lopezbertoni 2012-07-06 14:30:57

+0

@lopezbertoni:這並不重要,我。我只想讓搜索結果在點擊提交按鈕時出現在主視圖中。我會把jQuery放在插件中嗎?如果是這樣,我如何讓它將該事件傳遞給主應用程序?如果它在主應用程序中,我該如何讓插件觸發事件? – gblock 2012-07-06 14:34:34

+1

像@misterjames說:「使用局部視圖來渲染查詢的結果,甚至在主要頁面加載,這簡化了您的開發。」這是實現你想要的關鍵。您可以使用jQuery從部分視圖更新主視圖。 – lopezbertoni 2012-07-06 19:55:39

回答

0

是一種形式的兩個按鈕組成部分?沒有你將其連接到腳本或使其成爲一個形式的一部分,與相關的操作的按鈕就不會調用操作。

使用局部視圖來渲染查詢的結果,甚至在主要頁面加載。這簡化了您的開發。

添加一個jQuery事件處理程序(jQuery.on())來觀察按鈕在您的主頁上單擊,或者如果在部分視圖中返回按鈕,只需使用部分中的on就緒處理程序並附加button.click( )事件,再次使用jQuery。

jQuery的事件處理程序可以提交查詢的值,張貼到你的控制器,並顯示結果的照顧。我有一些老的文章here,但他們仍然是有關你的問題,並證明提交的數據和取諧音。

你的客戶端代碼最終會看起來像這樣:

$("#your-button").click(function() { 
    var fetchUrl = '@Url.Action("ActionName", "Controller")'; 

    $.post(fetchUrl, { searchParams: $("#your-search-box").val() }) 
     .success(function (data) { 
      // replace the contents of the DIV with the results. 'data' 
      // here has whatever you sent back from your partial view 
     }) 
     .error(function (data) { 
      // handle the error, use a DIV with some kind of alert message etc 
     }); 

}); 

希望這有助於一些。

+0

選擇按鈕和選擇列表都在表單中。當按鈕被點擊時,它會調用一個javascript函數來分析選擇列表中的信息並將其傳遞給控制器​​操作。該操作會更改從主機應用程序導入的模型的信息。然後,插件的控制器返回主機應用程序的「Index.vbhtml」。我將使用我的插件視圖中的代碼更新該問題。 – gblock 2012-07-06 18:02:56

+0

我也改變了將主機應用中的CUName顯示爲CUInfoPlugin的局部視圖的視圖。 – gblock 2012-07-06 18:07:17