سلام آقای نصیری خسته نباشید
من الان واسه ثبت کاربر توی دیتابیس یه کلاس دارم به اسم 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 هام اومدم و این کلاس را به عنوان ViewModel خودم قرار دادم. و وقتی فرم Create و یا Edit رو Submit میکنم متد اعتبار سنجی من وارد عمل میشه
اینم کد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>
}
این View برای Create بود و برای Edit هم مشابه همینه
حالا اگر من درست متوجه شده باشم باید برای Edit ، از یک ViewModel دیگه مثلا CustomProfileEdit استفاده کنم و اونجا متد اعتبار سنجی دیگه ای تعریف کنم. منظور شما همین بود ؟