উত্তর:
সম্পর্কে "এটি যে 0 টি ত্রুটি এবং ইসভালিড == মিথ্যা" হতে পারে: এখানে এমভিসি উত্স কোডটি https://github.com/Mic Microsoft/references Source/blob/master/System.Web/ মডেলবাইন্ডিং / মডেলস্টেটড অভিধান.cs#L37-L41
public bool IsValid {
get {
return Values.All(modelState => modelState.Errors.Count == 0);
}
}
এখন, দেখে মনে হচ্ছে এটি হতে পারে না। ঠিক আছে, এটি এএসপি.নেট এমভিসি ভি 1 এর জন্য।
আপনি সম্ভবত ভিজ্যুয়াল স্টুডিওতে প্রোগ্রামিং করছেন আপনি যেমন সহজে ডিবাগিং পদক্ষেপগুলির জন্য ব্রেকপয়েন্টগুলি ব্যবহারের সম্ভাবনাটি আরও ভালভাবে নিতে চান (আপনার ক্ষেত্রে সমস্যাটি কী তা সম্পর্কে ধারণা পেয়ে)। এগুলিকে ঠিক সামনে / ঠিক সেই জায়গায় রাখুন যেখানে আপনি মডেলস্টেট.আইভিড চেক করেন এবং মডেলস্টেটের উপরে ঘোরাবেন। এখন আপনি সহজেই ভিতরে থাকা সমস্ত মানগুলি ব্রাউজ করতে পারেন এবং দেখেন কী ত্রুটিটি বৈধ ফিরতি মিথ্যা হয় causes
var asdf = ModelState.Values.Where(v => v.Errors.Count > 0);
আপনাকে সহায়তা করতে পারে
আপনার নিয়ামকের ক্রিয়াকলাপের নীচে কোডটি আটকান এবং ডিবাগারটি এই স্থানে রাখুন।
var errors = ModelState
.Where(x => x.Value.Errors.Count > 0)
.Select(x => new { x.Key, x.Value.Errors })
.ToArray();
bool hasErrors = ViewData.ModelState.Values.Any(x => x.Errors.Count > 1);
বা সাথে পুনরাবৃত্তি
foreach (ModelState state in ViewData.ModelState.Values.Where(x => x.Errors.Count > 0))
{
}
কখনও কখনও একটি বাইন্ডার কোনও ত্রুটি বার্তা ছাড়াই একটি ব্যতিক্রম ছুঁড়ে দেয়। কি ভুল তা জানতে আপনি নিম্নলিখিত স্নিপেটের সাথে ব্যতিক্রমটি পুনরুদ্ধার করতে পারেন:
(প্রায়শই যদি বাইন্ডার স্ট্রিংগুলি জটিল ধরণেরগুলিতে রূপান্তর করার চেষ্টা করে)
if (!ModelState.IsValid)
{
var errors = ModelState.SelectMany(x => x.Value.Errors.Select(z => z.Exception));
// Breakpoint, Log or examine the list with Exceptions.
}
আপনি যদি মডেলস্টেটের জন্য চেকটি সরিয়ে থাকেন sআইএসভালিড এবং এটিকে ত্রুটিযুক্ত হতে দিন, আপনি যদি এই লাইনটি অনুলিপি করেন ((System.Data.Entity.Validation.DbEntityValidationException)$exception).EntityValidationErrors
এবং ভিজ্যুয়াল স্টুডিওর ঘড়ির অংশে এটি আটকে দেন তবে এটি ত্রুটিটি ঠিক কী তা আপনাকে দেবে। ত্রুটি কোথায় তা পরীক্ষা করে অনেক সময় সাশ্রয় করে।
নিয়ামকের মডেলস্টেট সম্পত্তিটি আসলে একটি মডেলস্টেটডোরিয়ানো অবজেক্ট। আপনি অভিধানের কীগুলি দিয়ে পুনরাবৃত্তি করতে পারেন এবং সেই নির্দিষ্ট ক্ষেত্রটি বৈধ কিনা তা পরীক্ষা করতে ইসভালিফিল্ড পদ্ধতিটি ব্যবহার করতে পারেন।