Как мне сделать так, чтобы у меня было 5 полей в таблице базы данных.
Я создал модель для проверки с примечаниями к данным и создал поле сравнения пароля, а также атрибут сравненияpassword.(теперь моя модель имеет 6 полей, включая одно внешнее поле для сравнения паролей и 5 полей базы данных)
Я создал представление с этой моделью. (Пользователь)
Теперь я также создал контроллер, но здесь возникает проблема: при вызове этого ActionMethod
компилятор жалуется на внешнее поле и сообщает, что не может найти какой-либо метод расширения.Как я могу создать метод расширения или устранить эту ошибку?
[HttpPost]
public ActionResult Create(User Users)
{
}
Это ошибка, которую я получаю:
CS1061: 'MvcApplication1.Models.User' делаетне содержит определения для «ComparePassword» и не найден метод расширения «ComparePassword», принимающий первый аргумент типа «MvcApplication1.Models.User» (отсутствует директива using или ссылка на сборку?)
Моя модель:
[MetadataType(typeof(UserModel))]
public partial class User { }
public class UserModel
{
[Display(Name = "User Name")]
[Remote("Username", "User", ErrorMessage = "User Name already exists")]
[Required(ErrorMessage = "User Name is required")]
public string vcr_UserName { get; set; }
[RegularExpression(@"\w+([-+.']\w+)*@\w+([-.]\w+)*\.\w+([-.]\w+)*", ErrorMessage = "Must be a valid Email Address")]
[Remote("EmailAddress", "User", ErrorMessage = "Email Address already exists")]
[Required(ErrorMessage = "Email is required")]
[Display(Name = "Email Address")]
public string vcr_EmailAddress { get; set; }
[Display(Name = "Password")]
[RegularExpression(@"^.{3,16}$", ErrorMessage = "The Password length must be between 3 and 16 characters ")]
[Required(ErrorMessage = "Password is required")]
public string vcr_Password { get; set; }
[Display(Name = "Compare Password")]
[Compare("vcr_Password", ErrorMessage = "Passwords do not match")]
public string ComparePassword { get; set; }
[Required(ErrorMessage = "Country is required")]
[Display(Name = "Country")]
public string vcr_Country { get; set; }
[Required(ErrorMessage = "Website is required")]
[Display(Name = "WebSite")]
public string vcr_Website { get; set; }
[Display(Name = "Expertise")]
[Required(ErrorMessage = "Expertise is required")]
public string vcr_Expertise { get; set; }
public int int_GroupId { get; set; }
public Boolean bit_Active { get; set; }
}
Мой контроллер
public ActionResult Create()
{
return View();
}
[HttpPost]
public ActionResult Create(User Users)
{
try
{
UserRepository UserRep = new UserRepository();
if (ModelState.IsValid)
{
Users.int_GroupId = 2;
Users.dtm_CreatedDate = DateTime.Now;
Users.bit_Active = true;
UserRep.Add(Users);
UserRep.Save();
}
return View();
}
catch { return View(); }
}
Вид
@model MvcApplication1.Models.User
{
ViewBag.Title = "Index";
Layout = "~/Views/Shared/_Layout.cshtml";
}
Индекс
@using (Html.BeginForm()) {
@Html.ValidationSummary(true)
<fieldset>
<legend>Users</legend>
<div class="editor-label">
@Html.LabelFor(model => model.vcr_UserName)
</div>
<div class="editor-field">
@Html.EditorFor(model => model.vcr_UserName)
@Html.ValidationMessageFor(model => model.vcr_UserName)
</div>
<div class="editor-label">
@Html.LabelFor(model => model.vcr_Password)
</div>
<div class="editor-field">
@Html.PasswordFor(model => model.vcr_Password)
@Html.ValidationMessageFor(model => model.vcr_Password)
</div>
<div class="editor-label">
@Html.LabelFor(model => model.ComparePassword)
</div>
<div class="editor-field">
@Html.PasswordFor(model => model.ComparePassword)
@Html.ValidationMessageFor(model => model.ComparePassword)
</div>
<div class="editor-label">
@Html.LabelFor(model => model.vcr_EmailAddress)
</div>
<div class="editor-field">
@Html.EditorFor(model => model.vcr_EmailAddress)
@Html.ValidationMessageFor(model => model.vcr_EmailAddress)
</div>
<p>
<input type="submit" value="Create" />
</p>
</fieldset>
}
Хорошо, когда я нажимаю кнопку "Создать", я получаю вышеуказанную ошибку