2016-11-16 2 views
0

Я пытаюсь добавить частичный вид с именем «Нижний колонтитул» в представление под названием «Индекс».Исключение при добавлении ASP.NET MVC5 Частичные виды

Вид «Индекс» является частью Контролера работника, а «Нижний колонтитул» представляет собой общий вид.

Index Просмотр кода:

@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** 

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 («Нижний колонтитул», @ Model.FooterData); и @ Html.RenderPartial («Нижний колонтитул», Model.FooterData); Но все же заканчивается с той же ошибкой – Manju

ответ

1

Изменение этой линии

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

Для

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

По-прежнему такая же ошибка, теперь вместо «RenderPartial», она говорит «Частично» в сообщении об исключении. – Manju

+0

См. Обновление. Вам нужно передать значение, которое вы передаете в RederPartial. По умолчанию он будет вводить динамический, поскольку модель на вашей индексной странице отличается от типа FooterData (другое пространство имен) – garethb

+0

Спасибо, помощник .... Это решение действительно сработало для меня. – Manju

Смежные вопросы