[英]how to render only a specific part of a partial view?
我目前正在使用在Visual Studio中使用jquery 1.9.1和jquery mobile 1.3.2的Web應用程序 ( MVC4模板)。我有很多頁面使用側面板。側面板中的元素幾乎相同,所以我決定將其放在局部視圖中,但是側面板中的元素在所有頁面中並不完全相同。 所以我正在考慮將所有頁面中使用的側面板的所有元素放在局部視圖中,並根據我正在使用的頁面選擇性地呈現它們。
所以我有什么辦法可以從局部視圖中僅渲染選擇性元素?
您真的需要使用Java腳本嗎?
讓我們整理一下想法:
我在很多頁面上都使用側面板
我在這里要做的是創建一個布局頁面,您可以在所有需要添加此側面板的視圖上使用它。 因此,您要在最終的html輸出上呈現此布局的視圖應包括以下部分:
@{
ViewBag.Title = "Roles";
Layout = "~/Views/Shared/_SidePanelLayout.cshtml";
}
所以我想將所有頁面中使用的側面板的所有元素放在局部視圖中,並有選擇地渲染
確定,我會做同樣的事情,但是,選項的渲染,我不會使用javascript。 我希望通過將模型發送到視圖來發送唯一必需選項的html。 這是我要編碼的過程:
1-無論何時請求使用此側面板布局的頁面,都應填充ViewBag屬性(或模型)以傳遞頁面名稱。 因此,假設您的“主頁/索引”視圖使用此布局,則可以執行以下操作:
public ActionResult Index()
{
ViewBag.PageName = "Home-Index"; //you could use constants or enums as best practice
return View();
}
在您的_SidePanelLayout視圖上的某個時刻,我將發出“渲染操作”調用。 實際上,此渲染操作將渲染帶有該頁面特定選項的側面板視圖:
@{ Html.RenderAction("GetOptions", "SidePanelController", ViewBag.PageName); }
這意味着您將需要一個SidePanelController類,該類具有將返回SidePanelView的方法(具有您所請求頁面的特定選項):
public class SidePanelController: Controller
{
public ActionResult GetOptions(string pageName)
{
//you may want to change this List<string> for a list of objects that include
//the properties you need like url, name, tooltip, etc
List<string> menuOptions = new List<string>();
//Determine which options should be rendered
/* your code */
//return the view with the filtered options
return PartialView("_SidePanelView", menuOptions);
}
}
這樣,您就可以滿足您的要求。 它比使用javascript復雜一些,但是它是更可靠的解決方案。
希望這可以幫助。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.