2017-04-06 47 views
0

使用asp.net MVC局部視圖我有局部視圖LeftBanner.cshtml應該從DB顯示某些數據(圖像)如何在佈局內@RenderPage

LeftBanner.cshtml

@model IEnumerable<WebApplication1.ViewModels.Banner> 

    <table class="table"> 


    <tr> 
     <th>Test Banner!</th> 
    </tr> 

    @foreach (var banner in Model) 
    { 
     <tr> 
      <td> 
       @Html.LabelFor(b => banner.ImageDesc); 
       <img src="@Url.Content(banner.ImagePath)" alt="Image" /> 
      </td> 
     </tr> 
    } 

</table> 

SharedController

using System; 
using System.Collections.Generic; 
using System.Linq; 
using System.Web; 
using System.Web.Mvc; 
using WebApplication1.ViewModels; 

namespace WebApplication1.Controllers 
{ 
    public class SharedController : Controller 
    { 
     public ActionResult LeftBanner() 
     { 
      List<Banner> b = new List<Banner>() { 
       new Banner() {ImageDesc = "Left Banner Description", ImagePath = "~/Images/money.jpg" }, 
       new Banner() {ImageDesc = "Left Banner Description2", ImagePath = "~/Images/money.jpg" } 
      }; 
      return View(b); 
      // return View(); 
     } 
    } 
} 

_Layout.cshtml

<!DOCTYPE html> 
<html> 
<head> 

</head> 
<body> 
    <div> 
     @RenderPage("~/Views/Shared/LeftBanner.cshtml") 
    </div> 

</body> 
</html> 

的錯誤

The model item passed into the dictionary is of type 'WebApplication1.ViewModels.EmployeeListViewModel', but this dictionary requires a model item of type 'System.Collections.Generic.IEnumerable`1[WebApplication1.ViewModels.Banner]'. 

在Asp.net的Web表單用戶控件ASCX可以是獨立的,真正可重複使用。

請幫我理解,爲什麼我不能封裝我的局部視圖? 這不是真正的重用, 如果我每次使用它都必須傳遞到局部視圖模型。 它可以是獨立的,並且不通過模型就可以訪問數據庫?

非常感謝!

+0

將此添加到佈局頁面的頂部@model WebApplication1.ViewModels –

+0

Hello, 我將@model WebApplication1.ViewModels.Banner添加到佈局頁面。現在我得到了另一個錯誤:傳入字典的模型項目類型爲'WebApplication1.ViewModels.EmployeeListViewModel',但是這個字典需要一個'WebApplication1.ViewModels.Banner'類型的模型項目。 –

+0

檢查我的波紋管答案,並讓我知道。 –

回答

2

在你LeftBanner()動作方法返回這樣,

return PartialView("LeftBanner",b); 

然後在你的頁面_Layout.cshtml,調用操作LeftBanner像波紋管,

@Html.Action("LeftBanner", "Shared") 

希望它幫助:)

+1

非常感謝! 它的工作@ Html.Action(「LeftBanner」,「共享」) 如何使用@RenderPage部分視圖? 有可能嗎? –

+0

我很高興它幫助你。請標記爲答案:) –