কোনও এএসপি.নেট এমভিসি অ্যাপ্লিকেশন বিকাশ করার সময় যা মডেলটি আপডেট হতে দেয়, আপনাকে কীভাবে আপডেট করা ভিউ মডেলটি গ্রহণ করতে হয় এবং এটি এখন আপডেট হওয়া মডেলের সাথে কীভাবে মেলে যায় তা জানতে কিছু উপায় প্রয়োজন। এটি করার কয়েকটি ভিন্ন উপায় আছে বলে মনে হচ্ছে এবং আমি ভাবছি যে এগুলির কোনও সঠিক এমভিসি না হলে (যেমন মডেলটিতে থাকা আপনার কন্ট্রোলার স্টোরের ডেটা থাকা সঠিক এমভিসি নয়)?
সমস্ত দেখুন মডেলের একটি আইডি রয়েছে: পেশাদাররা
- সর্বদা নিশ্চিত করুন যে আপনি আপনার মডেলটির সাথে মেলে নিতে পারেন।
কনস
- আপনার সত্যিকারের সতর্কতা অবলম্বন করতে হবে যে আইডিগুলির কোনওটিই পরিবর্তিত হয়নি অন্যথায় আপনার ব্যবহারকারীর সারি আপডেট করতে পারে যাতে তাদের অ্যাক্সেস না করা উচিত।
কেবল খালি ন্যূনতম দর্শনের মডেলগুলির একটি আইডি রয়েছে: পেশাদাররা
- ব্যবহারকারীদের অ্যাক্সেস করা উচিত নয় এমন ডেটা আপডেট করার এড়াতে খুব কম চেকিংয়ের প্রয়োজন।
কনস
- কোন ভিউ মডেলগুলি কোন মডেলের সাথে মেলে তা ট্র্যাক করা আরও কঠিন।
- আপনাকে এখনও আইডি সহ কয়েকটি ভিউ মডেল চেক করতে হবে তা নিশ্চিত করার জন্য যে ব্যবহারকারীদের অ্যাক্সেস না থাকা উচিত ডেটা আপডেট করছে না।
কোনও দর্শন মডেলের আইডি নেই:
পেশাদাররা
- আপডেটের জন্য আইডি চেক করার প্রয়োজন নেই।
কনস
- আপনাকে রাষ্ট্রহীনতা ত্যাগ করতে হবে।
সুতরাং আমার দুটি প্রশ্ন আছে।
প্রথমত, কোন সঠিক / ভুল পছন্দ আছে? (যদি তা না হয় তবে তার অর্থ পছন্দটি মতামতের বিষয় এবং আমার দ্বিতীয় প্রশ্ন মতামত ভিত্তিক এবং এড়ানো উচিত))
দ্বিতীয়ত, যদি সঠিক / ভুল পছন্দ হয় তবে তা কোনটি?
একটি মন্তব্যে স্পষ্ট করতে, আমি যখন আপনার কাছে একটি ভিউ মডেল থাকে যা আপনার ডাটাবেস অবজেক্টটির নকল করে তখন আমি কথা বলছি।
এটি ভাবুন:
public class InvoiceViewModel //Does not have ID, does not relate to model.
{
public CustomerViewModel CustomerVM { get; set; } //Maybe has ID? Does relate to model.
public AddressViewModel BillingAddressVM { get; set; } //Ditto
public AddressViewModel ShippingAddressVM { get; set; } //Ditto
public List<InvoiceLineItemViewModel> ItemVMs { get; set; } //Each one has an ID?
}
এটা না:
public class InvoiceViewModel
{
public Customer Customer { get; set; }
public Address BillingAddress { get; set; }
public Address ShippingAddress { get; set; }
public List<InvoiceLineItem> Items { get; set; }
}
You have to abandon statelessness.
- আপনি সবেমাত্র এমভিসি ব্যবহারের পছন্দটি করেছেন অর্থহীন।