Не удается неявно преобразовать тип 'string' в Model - PullRequest
1 голос
/ 28 февраля 2012

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

Ошибка 1 Не удается неявно преобразовать тип 'string' в 'NSWebSite.Models.Role'

public Role GetRoleForUser (User user)
{
    if (!UserExists(user))
        throw new ArgumentException(MissingUser);

    return user.Roles.TargetRoleName;
}

Ошибка 2 «NSWebSite.Models.User» не содержит определения для «RoleID»

User newUser = new User()
{
    Name = name,
    Password = FormsAuthentication.HashPasswordForStoringInConfigFile(
        password.Trim(), "md5"),
    Email = email,
    RoleID = role.Id
};

Ошибка 1 - я не знаю, как исправить, поэтому любые советыприветствуется.

Ошибка 2 - Я получаю его, потому что моя модель пользователя не содержит определения для RoleID.Если я хочу установить роль при создании нового пользователя, что я должен поставить вместо этого?

Ниже приведен мой файл репозитория (измененный здесь: brianleggDOTcom / post / 2011/05/09 / Implementing-your-own-RoleProvider-and-MembershipProvider-in-MVC-3.aspx) - DOT =.(меры по защите от спама :-))

http://www.mediafire.com/?gey4y9ub0v2u9nh

и мой файл Model.Designer.cs

http://www.mediafire.com/?qa3p9we8uqwfj09

Ответы [ 3 ]

0 голосов
/ 28 февраля 2012

Мой первый вопрос: почему все это в одном классе?

Я бы начал с сортировки классов: Role, User и т. Д.

Вам нужночтобы определить, что такое Role и что такое User, отдельно.

public class User {

  private String name;,
  private String password;
  private String email;
  private RoleID role;

  public User(String name, String password, String email, RoleID role) {
    this.name = name;
    this.password = password;
    this.email = email;
    this.role = role;
  }

  public void someOtherMethod() {
    //some code here, etc
  }

}
0 голосов
/ 28 февраля 2012

Я новичок в этой части MVC и C #, из исходного примера по адресу: https://www.brianlegg.com/post/2011/05/09/Implementing-your-own-RoleProvider-and-MembershipProvider-in-MVC-3.aspx

Я изменил схему БД с 1 на много для пользователя и ролей на отношение многие ко многим. После изменения схемы БД и обновления схемы объекта все снова заработало, как в оригинальном сообщении в блоге.

Почему оригинальный плакат не разделил два класса, я не уверен, но как только я получу работу, как я хочу, я начну смотреть на очистку кода. Если у кого-то есть какие-либо предложения о том, как сделать так, чтобы пример с вышеупомянутой веб-страницы работал с отношениями «многие ко многим» для пользователя и ролей, он будет очень признателен: -)

0 голосов
/ 28 февраля 2012

Ваша Ошибка # 2 просто означает, что ваш класс User не имеет определения свойства RoleID.Посмотрите на определение класса, и вы можете определить его там.

Ваша Ошибка # 1 выглядит так, как будто у вас есть метод с типом возврата Role, и вы пытаетесь это сделать:

return user.Roles.TargetRoleName;  // this is a string???

Если вы хотите вернуть string, вам нужно изменить ваш метод следующим образом:

string YourMethodName(...any parameters you have...)
{
    // ...your code here
    return SomeRole;
}

Или вы можете изменить TargetRoleName свойство от типа string до Role.

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