我有一個網站只有一個視圖,其中包含幾個部分視圖。 (標籤)。我想發送一個對象模型(列表)從我的行動到我的看法,但因爲即時通訊只使用一個視圖干擾其他模型,所以我不能發送模型到視圖。有可能將模型返回到我的部分視圖,我想要模型,但是這會破壞整個網站(僅顯示特定的部分視圖而不顯示其他視圖)。我唯一能想到的另一種方式就是viewbag,但是我試過了,我沒有像我想要的那樣行事。MVC發送模型查看無返回視圖
我嘗試傳遞給我的視圖的文件必須具有很高的安全性。還有什麼其他的方式?
我有一個網站只有一個視圖,其中包含幾個部分視圖。 (標籤)。我想發送一個對象模型(列表)從我的行動到我的看法,但因爲即時通訊只使用一個視圖干擾其他模型,所以我不能發送模型到視圖。有可能將模型返回到我的部分視圖,我想要模型,但是這會破壞整個網站(僅顯示特定的部分視圖而不顯示其他視圖)。我唯一能想到的另一種方式就是viewbag,但是我試過了,我沒有像我想要的那樣行事。MVC發送模型查看無返回視圖
我嘗試傳遞給我的視圖的文件必須具有很高的安全性。還有什麼其他的方式?
使用兒童動作;他們設計的這種事情:
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.Action
或Html.RenderAction
(而不是直接通過瀏覽器中的URL)調用此操作,因此您的數據與調用它的操作一樣安全。
您可以選擇讓它們全部從同一個BaseViewModel
類繼承,其中某些屬性保留爲空,而不需要該信息的頁面。不知道更多關於你想發送的不同類型的模型,很難更具體。
每一個動作會再使用:
public ActionResult Index()
{
var viewModel = new BaseViewModel();
return View(viewModel);
}
public ActionResult ShowList()
{
var viewModel = new BaseViewModel
{
ListProp = new MyList()
};
return View(viewModel);
}
使用jQuery每個局部視圖加載特定的模型。
$阿賈克斯({ 類型: 「獲取」, 網址: '/ API /控制器/動作', 成功:功能(數據){ AddModelToPage(數據);} , 錯誤:函數(數據){ alert('error'); } });
A BIG THANKS!優秀的解決像魅力一樣工作。 – Reft