Использование оператора if для проверки значения bool - PullRequest
1 голос
/ 04 апреля 2020

В моей модели есть переменная bool, и я хочу ее проверить. Если это правда, я хочу показать пользователям определенные HTML, и те, которые имеют это ложь, другие HMTL. Модель пользователя - это место, где хранится вся информация о пользователе. Ключи Модель - это место, где хранятся данные таблицы.

модель представления:

public partial class User
{
    public bool Addon { get; set; }
}

Я пытаюсь вставить оператор if в представление _NavBar. Код выглядит следующим образом:

@model Vidly2.Models.User


@{
    ViewBag.Title = "Home Page";
    bool admin = Model.Addon;
}

@if (admin)
{     
 *HTML Code*
}
else
{
  *HTML Code*
}

Метод публикации:

[HttpPost]
public ActionResult Autherize(Vidly2.Models.User userModel)
{
    using (LoginDataBaseEntities db = new LoginDataBaseEntities())
    {
        var userDetails = db.Users.Where(x => x.Email == userModel.Email && x.Password == userModel.Password).FirstOrDefault();
        if (userDetails == null)
        {
            userModel.LoginErrorMessage = "Wrong username or password.";
            return View("Index", userModel);
        }
        else {
            Session["userID"] = userDetails.Email;
            return RedirectToAction("Index", "Keys");
        }
    }
    return View();
}

Я получаю следующую ошибку:

Сведения об исключении: System.InvalidOperationException: Элемент модели, передаваемый в словарь, имеет тип 'System.Collections.Generi c .List`1 [Vidly2.Models.VblyyKeyy]', но для этого словаря требуется элемент модели типа 'Vidly2.Models.User'.

Ошибка источника:

Line 9:  </head>
Line 10: <body>
Line 11:     @Html.Partial("_NavBar")
Line 12:     <div class="container body-content">
Line 13:         @RenderBody()

Как изменить оператор if для работы? Есть ли проблемы с типами?

Спасибо за решение проблемы.

Ответы [ 2 ]

0 голосов
/ 04 апреля 2020

Пожалуйста, измените эту строку

@model Vidly2.Models.User

На

@model IEnumerable<Vidly2.Models.User>

синтаксис

@model IEnumerable<projectname.Models.class name which you want to access here>
0 голосов
/ 04 апреля 2020

Кажется, в вашем утверждении if нет ничего плохого. На самом деле ваш запрос передает List<Vidly2.Models.ViblyyKeyy> представлению, но представление ожидает Vidly2.Models.User. Поэтому вам нужно либо изменить код C#, чтобы передать новый экземпляр Vidly2.Models.User в свой просмотр, либо изменить свой взгляд, чтобы вместо него принимать List<Vidly2.Models.ViblyyKeyy>.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...