Я пытаюсь отобразить частичный вид в моем файле Site.Master, но я продолжаю получать ошибку (ссылка на объект не установлена в экземпляр объекта). Если я сразу получаю доступ к представлению, я получаю информацию, которая мне нужна, но если я получаю доступ к представлению индекса из HomeController, я получаю сообщение об ошибке. В частичном представлении будут отображаться зарегистрированные пользователи, отдел и роль. Это мой код.MVC Partial Views in Site.Master
Контроллеры папки -HomeController.cs -UsersController.cs
Models
-Repository Folder
- UersRepository.cs
-Repository Interface Folder
- IUsers.cs
-Service Folder
- UsersService.cs
- IUserService.cs
-Validation Folder
- IValidationDictionary
- ModelStateWrapper
мнение о том, что я пытаюсь частично визуализации называется LoginInfo.ascx и он находится в общей папке.
LoginInfo.cs Код:
<%@ Control Language="C#" Inherits="System.Web.Mvc.ViewUserControl<IEnumerable<Users>>" %>
<%@ Import Namespace="TimeAttendanceMVC.Models"%>
<table>
<tr>
<th>
UserName
</th>
<th>
Department
</th>
<th>
UserType
</th>
</tr>
<% foreach (var item in Model) { %>
<tr>
<td>
<%: Html.DisplayFor(modelItem => item.UserName) %>
</td>
<td>
<%: Html.DisplayFor(modelItem => item.Department) %>
</td>
<td>
<%: Html.DisplayFor(modelItem => item.UserType) %>
</td>
</tr>
<% } %>
</table>
Site.Master Код:
<% Html.RenderPartial("LoginInfo"); %>
UserController.cs
public class UsersController : Controller
{
//
private IUsersService _service;
//==============================================================================
//==============================================================================
public UsersController()
{
_service = new UsersService(new ModelStateWrapper(this.ModelState));
}
public UsersController(IUsersService service)
{
_service = service;
}
//==============================================================================
//==============================================================================
// GET: /Employee/
//==============================================================================
//==============================================================================
// GET: /Employee/
public ActionResult Index()
{
var model = _service.Return_UserName_Dept();
return View("LoginInfo", model);
}
}
HomeController.cs
public ActionResult Index()
{
//var model = _service.Return_UserName_Dept();
//return View(model);
return View();
}
С кодом выше, я получаю сообщение об ошибке. Если я не комментирую две строки в своем HomeController, и я передаю модель в представление, то она отлично работает. Но моему HomeController понадобится другая модель, так как я могу передать 2 модели в представление?
Любые идеи, что я делаю неправильно? Я все еще изучаю MVC прямо сейчас, поэтому я не так хорош в этом. Любая помощь будет оценена по достоинству. Благодарю.
Я изменил свой код следующим образом: <% Html.RenderAction ("LoginInfo"); %> но теперь я получаю другую ошибку: Ошибка выполнения дочернего запроса для обработчика 'System.Web.Mvc.HttpHandlerUtil + ServerExecuteHttpHandlerAsyncWrapper'. – MikeB55
Посмотрите на InnerException, чтобы найти проблему. Возможно, вы забыли указать имя контроллера. – SLaks
InnerException говорит: {«Открытый метод действия« LoginInfo »не найден на контроллере« TimeAttendanceMVC.Controllers.HomeController ».}. Я не знаю, как это исправить. Должен ли я добавить новое действие LoginInfo в свой HomeController? Это действие присутствует в моем UserController. – MikeB55