اندازهی قلم متن
تخمین مدت زمان مطالعهی مطلب:
یک دقیقه
در پروژهای که در حال حاضر روی آن کار میکنم برای برخی موجودیتها، فرمهای ایجاد و ویرایش را یکی در نظر گرفتم و به تبع آن از ویوو مدل یکسانی هم برای این ویوو استفاده کردهام. اما مشکلی که وجود داشت این بود که برخی از فیلدها در حالت ویرایش در فرم نمایش داده نمیشد. درواقع در حالتی که ویوی مذکور در حالت ویرایش باز میشد چنین شرطی داشتم:
بنابراین هنگامی که فرم در حالت ویرایش، ارسال میشد، در کنترلر اجازه عبور از ModelState.IsValid داده نمیشد. پس نیاز بود که به ModelState بگویم که وقتی در حالت ویرایش هستیم، به اعتبارسنجیهای موجود در ویومدل که مربوط به پراپرتی Password بود توجه نکن. نحوه انجام این کار به شکل زیر بود:
فقط کافیست قبل از ModelState.IsValid خطاهای مربوط به پراپرتی Password را از ModelState حذف کنیم.
@if (!Model.Id.HasValue) { <div class="form-group"> <label>رمز عبور</label> @Html.BootstrapEditorLtrFor(x => x.Password) @Html.ValidationMessageFor(x => x.Password) </div> }
ویومدل هم به شکل زیر بود:
public class AddOrEditUserViewModel { ... [Required(ErrorMessage = "رمز عبور را وارد کنید")] [MinLength(6, ErrorMessage = "حداقل 6 کاراکتر")] public string Password { get; set; } ... }
if (model.Id.HasValue) { ModelState["Password"].Errors.Clear(); } if (ModelState.IsValid) { ... }