2013-04-24 101 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(); 
});