2016-11-16 72 views
0

我試圖將名爲「Footer」的部分視圖添加到名爲「Index」的視圖中。添加ASP.NET MVC5部分視圖的異常

「索引」視圖是員工控制器的一部分,「頁腳」視圖是共享視圖。

索引視圖代碼:

@using MVC_Demo1.Models 
@Model EmployeeListViewModel 

@{ 
Layout = null; 
} 

<h2>Hello, @Model.UserName</h2> 

<a href="/Authentication/Logout">Logout</a> 

<a href="/Employee/AddNew">Add New</a> 

@foreach (EmployeeViewModel empObj in Model.employees) 

{ 
<div>Name: @empObj.EmployeeName</div> 
<div>Salary: @empObj.EmployeeSalary</div> 
<div>Role: @empObj.EmployeeRole</div> 
<br /> 
} 

@{Html.RenderPartial("Footer", Model.FooterData);} **// Getting error in this line on trying to add a partial view Footer** 

頁腳視圖代碼:

@using MVC_Demo1.ViewModel 
@Model FooterViewModel 

<div style="text-align:right;background:silver;color:darkcyan;border:1px solid gray; margin-top:2px; padding-right: 10px;"> 
@Model.CompanyName @Model.Year 
</div> 

EmployeeListViewModel類:

public class EmployeeListViewModel 
{ 
    public List<EmployeeViewModel> employees { get; set; } 
    public string UserName { get; set; } 
    public FooterViewModel FooterData { get; set; } 
} 

FooterViewModel類:

public class FooterViewModel 
{ 
    public string CompanyName { get; set; } 
    public string Year { get; set; } 
} 

僱員控制器類:

public class EmployeeController : Controller 
{ 
    // GET: Test 
    [Authorize] 
    public ActionResult Index() 
    { 
     EmployeeBusinessLayer empBizObj = new EmployeeBusinessLayer(); 
     List<Employee> lstEmps = new List<Employee>(); 
     lstEmps = empBizObj.GetEmployees(); 
     EmployeeListViewModel empListViewObj = new EmployeeListViewModel(); 
     empListViewObj.UserName = User.Identity.Name; 
     List<EmployeeViewModel> lstEmpView = new List<EmployeeViewModel>(); 
     foreach (Employee emp in lstEmps) 
     { 
      EmployeeViewModel empViewObj = new EmployeeViewModel(); 
      empViewObj.EmployeeName = emp.FName + " " + emp.LName; 
      empViewObj.EmployeeSalary = emp.Salary.ToString("c"); 
      empViewObj.SetEmployeeRole(emp.Salary); 
      lstEmpView.Add(empViewObj); 
     } 
     empListViewObj.employees = lstEmpView; 
     empListViewObj.FooterData = new FooterViewModel(); 
     empListViewObj.FooterData.CompanyName = "Company name"; 
     empListViewObj.FooterData.Year = DateTime.Now.Year.ToString(); 
     return View("Index", empListViewObj); 
    } 
} 

異常消息: 說明:該請求提供服務所需的資源的編譯過程中出現錯誤。請查看以下具體的錯誤細節並適當修改您的源代碼。

編譯器錯誤消息:CS1973:'System.Web.Mvc.HtmlHelper'沒有可用的方法名爲'RenderPartial',但似乎有一個名稱爲擴展方法。擴展方法不能動態分派。考慮轉換動態參數或調用擴展方法而不使用擴展方法語法。

請讓我知道我在這裏錯過了什麼,以在視圖中添加局部視圖。如果我只是從「索引」視圖中刪除呼叫以添加部分視圖「頁腳」,視圖就會出現。

+0

刪除周圍html.renderpartial和行末的大括號() – garethb

+0

@garethb嘗試更新代碼 @ Html.RenderPartial (「Footer」,@ Model.FooterData);和 @ Html.RenderPartial(「Footer」,Model.FooterData); 但仍然在同樣的錯誤結果 – Manju

回答

1

改變這一行

@{Html.RenderPartial("Footer", Model.FooterData);} 

@Html.Partial("Footer", (FooterViewModel)Model.FooterData) 
+0

仍然是相同的錯誤,現在,而不是'RenderPartial',它說異常信息中'部分'。 – Manju

+0

查看更新。你需要將你傳遞給RederPartial的值。它將默認鍵入dynamic,因爲您的索引頁上的Model是與FooterData不同的類型(不同的名稱空間) – garethb

+0

感謝mate ....此解決方案對我來說確實有效。 – Manju