У меня есть шаблон редактора для DropDownList
@model object
<div class='form-fields @ViewData["class"]'>
@Html.LabelFor(x => x, new { @class = "form-fields__label" })
@Html.DropDownListFor(x => x, (SelectList)ViewData["selectList"], new { @class = "form-fields__input width-max d-block " + @ViewData["inputClass"]})
@Html.ValidationMessageFor(x => x, "", new { @class = "form-fields__form-error" })
И я читаю данные списка из View, используя ViewData, но получаю ошибку, что System.String
не имеет свойства 'P' (это мой статус). Я думаю, что это происходит потому, что когда данные попадают в мой шаблон, он читает только значение, а не свойство. Есть ли обходной путь для этого?
View
@Html.EditorFor(x => x.AdminForEdit.Status.Status, "DropDownList", new { selectList = new SelectList(MDC.Models.Accounts.UserStatus.GetStatuses(), Model.AdminForEdit.Status.Status, NinjectWebCommon.Dictionary.GetLocalization(Model.Device.Language.LanguageId, Model.AdminForEdit.Status.Name), Model.AdminForEdit.Status.Status)})
UserStatus класс
public class UserStatus
{
public string Status { get; set; }
public string Name { get; set; }
public bool AlowLogIn { get; set; }
public string ErrorMessage { get; set; }
public UserStatus()
{
}
public UserStatus(string status, string name, bool alowLogin, string errorMessage)
{
Status = status;
Name = name;
AlowLogIn = alowLogin;
ErrorMessage = errorMessage;
}
public static UserStatus Pending = new UserStatus("P", "L_USERSTATUS_PENDING", false, "L_ADMIN_LOGIN_ERRORUSERPENDING");
public static UserStatus Active = new UserStatus("A", "L_USERSTATUS_ACTIVE", true, "L_ADMIN_LOGIN_WRONGCREDENTIALS");
public static UserStatus Blocked = new UserStatus("B", "L_USERSTATUS_BLOCKED", false, "L_ADMIN_LOGIN_ERRORUSERBLOCKED");
public static UserStatus Deleted = new UserStatus("D", "L_USERSTATUS_DELETED", false, "L_ADMIN_LOGIN_ERRORUSERBLOCKED");
public static UserStatus Unknown = new UserStatus("X", "L_USERSTATUS_UNKNOWN", false, "L_ADMIN_LOGIN_ERRORUSERBLOCKED");
public static List<UserStatus> GetStatuses()
{
return new List<UserStatus> { Pending, Active, Blocked, Deleted };
}
public static UserStatus GetStatus(string status)
{
switch (status)
{
case "P":
return Pending;
case "A":
return Active;
case "B":
return Blocked;
case "D":
return Deleted;
default:
return Unknown;
}
}
}