2014-05-07 422 views
0

我有一個網站只有一個視圖,其中包含幾個部分視圖。 (標籤)。我想發送一個對象模型(列表)從我的行動到我的看法,但因爲即時通訊只使用一個視圖干擾其他模型,所以我不能發送模型到視圖。有可能將模型返回到我的部分視圖,我想要模型,但是這會破壞整個網站(僅顯示特定的部分視圖而不顯示其他視圖)。我唯一能想到的另一種方式就是viewbag,但是我試過了,我沒有像我想要的那樣行事。MVC發送模型查看無返回視圖

我嘗試傳遞給我的視圖的文件必須具有很高的安全性。還有什麼其他的方式?

回答

0

使用兒童動作;他們設計的這種事情:

FooController.cs

[ChildActionOnly] 
public ActionResult GetListOfStuff() 
{ 
    // fetch listOfStuff 
    return PartialView(listOfStuff); 
} 

查看/美孚/ GetListOfStuff.cshtml

@model IEnumerable<Path.To.StuffModel> 

@* HTML for displaying the list here *@ 

查看\富\ TheRealAction.cshtml

@model Path.To.SomeOtherModel 

... 

@Html.Action("GetListOfStuff", "Foo") 

注意:ChildActionOnly確保只能使用Html.ActionHtml.RenderAction(而不是直接通過瀏覽器中的URL)調用此操作,因此您的數據與調用它的操作一樣安全。

+0

A BIG THANKS!優秀的解決像魅力一樣工作。 – Reft

0

您可以選擇讓它們全部從同一個BaseViewModel類繼承,其中某些屬性保留爲空,而不需要該信息的頁面。不知道更多關於你想發送的不同類型的模型,很難更具體。

每一個動作會再使用:

public ActionResult Index() 
{ 
    var viewModel = new BaseViewModel(); 
    return View(viewModel); 
} 
public ActionResult ShowList() 
{ 
    var viewModel = new BaseViewModel 
    { 
     ListProp = new MyList() 
    }; 
    return View(viewModel); 
} 
-1

使用jQuery每個局部視圖加載特定的模型。

$阿賈克斯({ 類型: 「獲取」, 網址: '/ API /控制器/動作', 成功:功能(數據){ AddModelToPage(數據);} , 錯誤:函數(數據){ alert('error'); } });

相關問題