من الان واسه ثبت کاربر توی دیتابیس یه کلاس دارم به اسم CustomProfile که تمامی خصوصیتهای یک کاربر رو توی یه شیئ از این کلاس میریزم و بعد توی کدهای لایه مدل، این شیئ رو توسط کلاس Membership و ProfileBase خود دات نت توی پایگاه داده میریزیم. الان منظور شما اینه که من باید برای ویرایش یک کلاس CustomProfile دیگه با همون مشخصات بسازم و متد اعتبار سنجی برای Username اون رو یه متد دیگه قرار بدم ؟ ببینید کدهای من اینه:
public class CustomProfile { [Required(ErrorMessage="*")] [StringLength(50)] [System.Web.Mvc.Remote(action: "CheckUserName", controller: "User", HttpMethod = "POST", ErrorMessage = "این نام کاربری وجود دارد")] public string Username{ get; set; } [Required(ErrorMessage = "*")] public string Password{ get; set; } [Required(ErrorMessage = "*")] public string FirstName{ get; set; } [Required(ErrorMessage = "*")] public string LastName{ get; set; } [Required(ErrorMessage = "*")] [StringLength(10, ErrorMessage = "کدملی باید 10 رقم باشد")] public string NationalCode { get; set; } [Required(ErrorMessage = "*")] public string Address { get; set; } [RegularExpression(@"\w+([-+.']\w+)*@\w+([-.]\w+)*\.\w+([-.]\w+)*", ErrorMessage = "آدرس ایمیل معتبر نیست")] [System.Web.Mvc.Remote(action: "CheckEmail", controller: "User", AdditionalFields = "Username", HttpMethod = "POST", ErrorMessage = "این ایمیل وجود دارد")] public string Email{ get; set; } [StringLength(11, ErrorMessage = "تلفن باید 11 رقم باشد")] public string PhoneNo{ get; set; } [StringLength(11, ErrorMessage = "موبایل باید 11 رقم باشد")] public string MobileNo{ get; set; } public string[] Roles{ get; set; } public string LastActivityDate{ get; set; } public string LastLoginDate { get; set; } public string CreationDate { get; set; } public bool IsLockedOut{ get; set; } }
اینم کدViewها:
@model Sama.Models.CustomProfile @{ ViewBag.Title = "Create"; Layout = "~/Views/Shared/_Layout.cshtml"; } <script src="@Url.Content("~/Scripts/jquery.validate.min.js")" type="text/javascript"></script> <script src="@Url.Content("~/Scripts/jquery.validate.unobtrusive.min.js")" type="text/javascript"></script> @using (Html.BeginForm(actionName: "Create", controllerName: "User")) { @Html.ValidationSummary(true) <fieldset> <legend>کاربر جدید</legend> <div> <table> <tr> <td> <div> @Html.LabelFor(model => model.Username, "نام کاربری") </div> </td> <td> <div> @Html.EditorFor(model => model.Username) @Html.ValidationMessageFor(model => model.Username) </div> </td> </tr> <tr> <td> <div> @Html.LabelFor(model => model.Password, "کلمه عبور") </div> </td> <td> <div> @Html.PasswordFor(model => model.Password) @Html.ValidationMessageFor(model => model.Password) </div> </td> </tr> <tr> <td> <div> @Html.LabelFor(model => model.FirstName, "نام") </div> </td> <td> <div> @Html.EditorFor(model => model.FirstName) @Html.ValidationMessageFor(model => model.FirstName) </div> </td> </tr> <tr> <td> <div> @Html.LabelFor(model => model.LastName, "نام خانوادگی") </div> </td> <td> <div> @Html.EditorFor(model => model.LastName) @Html.ValidationMessageFor(model => model.LastName) </div> </td> </tr> <tr> <td> <div> @Html.LabelFor(model => model.NationalCode, "کد ملی") </div> </td> <td> <div> @Html.EditorFor(model => model.NationalCode) @Html.ValidationMessageFor(model => model.NationalCode) </div> </td> </tr> <tr> <td> <div> @Html.LabelFor(model => model.Email, "ایمیل") </div> </td> <td> <div> @Html.EditorFor(model => model.Email) @Html.ValidationMessageFor(model => model.Email) </div> </td> </tr> <tr> <td> <div> @Html.LabelFor(model => model.PhoneNo, "تلفن") </div> </td> <td> <div> @Html.EditorFor(model => model.PhoneNo) @Html.ValidationMessageFor(model => model.PhoneNo) </div> </td> </tr> <tr> <td> <div> @Html.LabelFor(model => model.MobileNo, "موبایل") </div> </td> <td> <div> @Html.EditorFor(model => model.MobileNo) @Html.ValidationMessageFor(model => model.MobileNo) </div> </td> </tr> <tr> <td> <div> @Html.LabelFor(model => model.Address, "آدرس") </div> </td> <td> <div> @Html.TextAreaFor(model => model.Address, 5, 30, null) @Html.ValidationMessageFor(model => model.Address) </div> </td> </tr> <tr> <td> نقشها </td> <td> @Helper.CheckBoxList("Roles", (List<SelectListItem>)ViewBag.Roles) </td> </tr> <tr> <td> </td> <td> <input type="submit" value="ذخیره" class="btn btn-primary" /> </td> </tr> </table> </div> </fieldset> }
حالا اگر من درست متوجه شده باشم باید برای Edit ، از یک ViewModel دیگه مثلا CustomProfileEdit استفاده کنم و اونجا متد اعتبار سنجی دیگه ای تعریف کنم. منظور شما همین بود ؟