এমভিসি নিয়ম ভঙ্গ না করে মাস্টার পৃষ্ঠায় (এএসপি.নেট এমভিসি ব্যবহার করে) ডেটা পাস করার আপনার উপায় কী?
ব্যক্তিগতভাবে, আমি অ্যাবস্ট্রাক্ট কন্ট্রোলার (বেস কন্ট্রোলার) বা বেস ক্লাস কোডটি পছন্দ করি যা সমস্ত দর্শনগুলিতে পাস করা হয়।
এমভিসি নিয়ম ভঙ্গ না করে মাস্টার পৃষ্ঠায় (এএসপি.নেট এমভিসি ব্যবহার করে) ডেটা পাস করার আপনার উপায় কী?
ব্যক্তিগতভাবে, আমি অ্যাবস্ট্রাক্ট কন্ট্রোলার (বেস কন্ট্রোলার) বা বেস ক্লাস কোডটি পছন্দ করি যা সমস্ত দর্শনগুলিতে পাস করা হয়।
উত্তর:
আপনি যদি নিজের ভিউগুলিকে দৃ strongly়ভাবে টাইপ করা ভিউ ডেটা ক্লাস করতে পছন্দ করেন তবে এটি আপনার পক্ষে কাজ করতে পারে। অন্যান্য সমাধান সম্ভবত আরও সঠিক তবে এটি নকশা এবং ব্যবহারিকতার আইএমএইচওর মধ্যে একটি দুর্দান্ত ভারসাম্য।
মাস্টার পৃষ্ঠাটি প্রাসঙ্গিকভাবে টাইপ করা ভিউ ডেটা শ্রেণীর সাথে সম্পর্কিত যেখানে কেবলমাত্র এটি সম্পর্কিত তথ্যই থাকে:
public class MasterViewData
{
public ICollection<string> Navigation { get; set; }
}
সেই মাস্টার পৃষ্ঠাটি ব্যবহার করে প্রতিটি দর্শন একটি দৃ strongly়ভাবে টাইপ করা ভিউ ডেটা শ্রেণিতে লাগে যার তথ্য রয়েছে এবং মাস্টার পৃষ্ঠাগুলি থেকে প্রাপ্ত ডেটা দেখুন:
public class IndexViewData : MasterViewData
{
public string Name { get; set; }
public float Price { get; set; }
}
যেহেতু আমি চাই না যে পৃথক নিয়ামকরা মাস্টার পৃষ্ঠাগুলির ডেটা একসাথে রাখার বিষয়ে কিছু জানতে চান আমি সেই যুক্তিকে একটি কারখানায় আবদ্ধ করি যা প্রতিটি নিয়ামকের কাছে দেওয়া হয়:
public interface IViewDataFactory
{
T Create<T>()
where T : MasterViewData, new()
}
public class ProductController : Controller
{
public ProductController(IViewDataFactory viewDataFactory)
...
public ActionResult Index()
{
var viewData = viewDataFactory.Create<ProductViewData>();
viewData.Name = "My product";
viewData.Price = 9.95;
return View("Index", viewData);
}
}
উত্তরাধিকার সম্পর্কটি ভালভাবে দেখার জন্য মাস্টারের সাথে মেলে তবে যখন এটি প্রতিবেদন / ব্যবহারকারীর নিয়ন্ত্রণের রেন্ডারিংয়ের কথা আসে আমি পৃষ্ঠাগুলি দর্শন ডেটাগুলিতে তাদের ভিউ ডেটা রচনা করব, যেমন
public class IndexViewData : MasterViewData
{
public string Name { get; set; }
public float Price { get; set; }
public SubViewData SubViewData { get; set; }
}
<% Html.RenderPartial("Sub", Model.SubViewData); %>
এটি কেবলমাত্র উদাহরণ কোড এবং এটি যেমনটি সংকলন করার উদ্দেশ্যে নয়। এএসপি. নেট এমভিসি 1.0 এর জন্য ডিজাইন করা।
আমি মাস্টার ভিউয়ের ডেটা-চালিত টুকরো টুকরো টুকরো করে পার্টিয়ালগুলিতে বিভক্ত করা এবং এইচটিএমএল.রেন্ডার অ্যাকশন ব্যবহার করে রেন্ডার করতে পছন্দ করি । জনপ্রিয় ভিউ মডেল উত্তরাধিকার পদ্ধতির তুলনায় এর কয়েকটি স্বতন্ত্র সুবিধা রয়েছে:
সম্পাদনা
জেনেরিক ত্রুটি নীচে আরও ভাল উত্তর সরবরাহ করেছে। দয়া করে এটি পড়ুন!
আসল উত্তর
মাইক্রোসফ্ট আসলে একটি এন্ট্রি পোস্ট করেছে জন্য "অফিসিয়াল" উপায়ে । এটি তাদের যুক্তিগুলির ব্যাখ্যা সহ এক ধাপে ধাপে ওয়াক-থ্রু সরবরাহ করে।
সংক্ষেপে, তারা একটি বিমূর্ত কন্ট্রোলার ক্লাস ব্যবহার করার পরামর্শ দেয় তবে নিজের জন্য দেখুন।
আমি কিছু গবেষণা করেছি এবং এই দুটি সাইট জুড়ে এসেছি। তারা সাহায্য করতে পারে।
এএসপি.নেট এমভিসি টিপ # 31 - মাস্টার পৃষ্ঠাগুলি এবং ব্যবহারকারীর নিয়ন্ত্রণগুলিতে ডেটা পাঠানো
আমি দেখতে পেয়েছি যে আপনি যে মডেল অবজেক্টে ভিউতে যাচ্ছেন তার একটি সাধারণ পিতামাতার ব্যতিক্রমী কার্যকর।
যে কোনওভাবেই পৃষ্ঠাগুলির মধ্যে কিছু সাধারণ মডেল বৈশিষ্ট্য থাকতে পারে।
অনুরোধ.প্যারামস অবজেক্টটি পরিবর্তনীয়। অনুরোধ প্রক্রিয়াকরণ চক্রের অংশ হিসাবে এটিতে স্কেলারের মান যুক্ত করা বেশ সহজ। দেখার দৃষ্টিকোণ থেকে, তথ্য কোয়েরিস্ট্রিং বা ফর্ম পোস্টে সরবরাহ করা যেতে পারে। HTH
আমি অন্য কিছু ভাল উপায় হতে পারে কিছু ইন্টারফেসের প্যারেন্টভিউর মতো কিছু সম্পত্তি দিয়ে দেখার জন্য ইন্টারফেস তৈরি করা, যাতে আপনি পৃষ্ঠাগুলির রেফারেন্সের প্রয়োজন এমন নিয়ন্ত্রণের জন্য এবং পাদদেশীয় নিয়ন্ত্রণের জন্য উভয়ই এটি ব্যবহার করতে পারেন যা থেকে অ্যাক্সেস করা উচিত মতামত।
অন্যান্য সমাধানগুলির কমনীয়তার ঘাটতি রয়েছে এবং এটি খুব বেশি সময় নেয়। আমি প্রায় পুরো বছর পরে এই অত্যন্ত দুঃখজনক এবং দরিদ্র কাজটি করার জন্য ক্ষমা চাইছি:
<script runat="server" type="text/C#">
protected override void OnLoad(EventArgs e)
{
base.OnLoad(e);
MasterModel = SiteMasterViewData.Get(this.Context);
}
protected SiteMasterViewData MasterModel;
</script>
স্পষ্টতই আমার কাছে সাইটমাস্টারভিউ ডেটাতে এই স্থির পদ্ধতি গেট () রয়েছে যা সাইটমাস্টারভিউ ডেটা প্রত্যাবর্তন করে।