2012-07-06 40 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