MVC4 бритва при доступе к нескольким классам моделей в одном представлении дает ошибку на различных элементах - PullRequest
0 голосов
/ 04 ноября 2019

У меня есть Shared Layout для входа. Для входа в систему у меня есть LoginViewModel для username, password, returnurl & isRemember. У меня есть другая модель для userSaltValue. Я хочу получить значение соли пользователя на стороне клиента в скрытом поле при загрузке страницы, которое я получаю в настоящее время при нажатии кнопки на стороне сервера. При использовании обеих моделей это дает мне ошибку для вышеуказанных параметров. Как мне это сделать?

Общий макет:

<!DOCTYPE html>
<html lang="en">
<head></head>

<body class="bg-gradient-primary">
  @RenderBody()   
</body>
</html>

Login.cshtml:

@model ROMvcApplication.Models.LoginVM
@model ROMvcApplication.Models.UserSalt

LoginVM.cs

namespace ROMvcApplication.Models
{
    public class LoginVM
    {
        public string Username { get; set; }

        public string Password { get; set; }

        public string ReturnURL { get; set; }

        public bool isRemember { get; set; }

    }
}

UserSalt.cs:

namespace ROMvcApplication.Models
{
    public class UserSalt
    {
        public string saltvalue { get; set; }
    }
}

1 Ответ

1 голос
/ 04 ноября 2019

У вас не может быть двух разных типов для одной и той же модели:

@model ROMvcApplication.Models.LoginVM
@model ROMvcApplication.Models.UserSalt

В конце концов, когда вы ссылаетесь на переменную Model в этом представлении, что вы ожидаете увидеть?

Вы можете , однако добавьте свое поле к модели, которую вы уже используете:

public class LoginVM
{
    public string Username { get; set; }

    public string Password { get; set; }

    public string ReturnURL { get; set; }

    public bool isRemember { get; set; }

    public string saltvalue { get; set; }
}

или , если вы не хотите изменять этомодель по любой причине, вы можете создать составную модель для этого представления:

public class LoginWithSaltVM
{
    public LoginVM Login { get; set; }

    public string saltvalue { get; set; }
}

По сути, у вас есть полная свобода для создания и изменения ваших классов в соответствии с вашими потребностями.

...