2013-04-24 102 views
1

我正在使用ASP.NET MVC 4jQuery。我的视图上有一个按钮控件。当它被点击时,它会在我的视图中“注入”一个局部视图。当我刷新页面时,局部视图消失了。如何在asp.net中刷新页面后保留注入的局部视图mvc

我的HTML标记:

<button id="RetrieveButton" type="button">Retrieve</button> 

<div id="RuleDetails"> 
    <div class="main-content"> 
      <p>Some text.</p> 
    </div> 
</div> 

我的jQuery与AJAX调用返回的局部视图返回的HTML:

$('#RetrieveButton').click(function() { 
    $.ajax(
    { 
      type: 'POST', 
      url: '@Url.Action("GetRuleDetails")', 
      data: { 
       systemCode: $('#SystemCodes').val() 
      }, 
      dataType: "html", 
      success: function (result) { 
       alert('success'); 
       var domElement = $(result); 
       $("#RuleDetails").html(domElement); 
      }, 
      error: function (result) { 
       alert('error'); 
      } 
    }); 
}); 

我的操作方法:

public ActionResult GetRuleDetails() 
{ 
    RuleViewModel viewModel = new RuleViewModel(); 

    return PartialView("_RuleInformation", viewModel); 
} 

我局部视图:

@model MyProject.ViewModels.Rules.RuleViewModel 

<div class="main-content"> 
    <h2>Rule Details</h2> 
</div> 

如果我要刷新页面,我需要这个“注入”部分视图保留在那里。目前,如果我刷新它,它会“重置”,并且注入的部分消失了。

回答

2

它不会再呈现该部分视图,因为它不记得按钮的单击状态。

一个实现你在找什么的方法之一是使用sammy.js

在点击按钮可以设置使用sammy.js的hashurl(如:'#/partialview')和页面刷新hashurl部分保持不变(但不不去服务器)。然后你可以相应地操作客户端代码

  1. 在你的页面中引用sammy.js引用。
  2. Intialize萨米像下面

     var app = $.sammy('body', function (context){ 
    
          this.get('#/PartialView1', function() { 
           fnLoadPartialView(); 
          }); 
    
    }); 
    
  3. 改变检索与HREF = 'PartialView1'

  4. function fnLoadPartialView(){ 
         $.ajax(
        { 
          type: 'POST', 
          url: '@Url.Action("GetRuleDetails")', 
          data: { 
           systemCode: $('#SystemCodes').val() 
          }, 
          dataType: "html", 
          success: function (result) { 
           alert('success'); 
           var domElement = $(result); 
           $("#RuleDetails").html(domElement); 
          }, 
          error: function (result) { 
           alert('error'); 
          } 
        }); 
    
          } 
    

5.

$('#RetrieveButton').click(function() { 
    fnLoadPartialView(); 
});