2013-10-29 177 views
0
public ActionResult Index(int directoryID) 
{ 
    Someclass sc = new Someclass(); 
    DataTable dt = sc.method("directory"); 

    return View(dt); 
} 

public ActionResult PlotPartial(DataTable dt) 
{ 
    return PartialView(dt); 
} 

上述索引方法返回一個數據表到IndexView工作正常。在同一個視圖中,我有一個按鈕,它應該加載PartialView「PlotPartial」傳遞整個模型,這是數據表。我怎樣才能最有效地實現這一點,而無需兩次創建數據表的實例。我可以在兩種操作方法中共享數據表嗎?我想要在部分視圖中的整個數據表。它沒有任何id列。MVC在Contoller動作方法和視圖之間共享數據表的最有效方式

Ajax代碼:

$('#btnPlot').click(function() { 
      $.ajax({ 
       url: '/Home/PlotPartial', 
       contentType: 'application/html; charset=utf-8', 
       data: { dt : @model }, 
       type: 'GET', 
       dataType: 'html' 
      }) 
      .success(function (result) { 
       $('#panelB').html(result); 
      }) 
      .error(function (xhr, status) { 
       alert(status); 
      }) 
     }); 

在以上代碼行 「數據:{DT:@model}」 不工作。

有人可以幫助請

回答

1

既然你傳遞的整個數據表背,而不是從DB拉動新版本,實在沒有理由使用AJAX這個在所有。

在您的視圖中,繼續並呈現PlotPartial視圖。

<div id='OriginalContent' class='ReplacableContent'> 
    // Put the initial content here 
</div> 
<div id='PlotPartial1' style='display:none' class='ReplacableContent'> 
    @Html.Partial("PlotPartial1", Model) 
</div> 
<div id='PlotPartial2' style='display:none' class='ReplacableContent'> 
    @Html.Partial("PlotPartial2", Model) 
</div> 
<div id='PlotPartial3' style='display:none' class='ReplacableContent'> 
    @Html.Partial("PlotPartial3", Model) 
</div> 
<div id='PlotPartial4' style='display:none' class='ReplacableContent'> 
    @Html.Partial("PlotPartial4", Model) 
</div> 
<div id='Controls'> 
    //Put your buttons here 
</div> 

每個按鈕都應該做這樣的事情:

$(".ReplacableContent").hide(); // Hide everything else 
$("PlotPartial1").show(); // Show the indicated partial 

(更新解決意見要求)

+0

戴夫感謝您的幫助。上述唯一的問題是我想用我的部分視圖替換容器/ div,即替換整個html。並且會有4個不同的容器/部分視圖,我將使用我的四個按鈕來調用它們,以替換同一個div體。你可以幫助一些代碼。謝謝 – user2906420

+0

這應該讓你開始。同樣,基本思想是,因爲無論如何它們都是相同的數據,所有這些都是從頭開始的。然後只需隱藏/顯示適當的部分。 – Dave

相關問題