বর্তমান পৃষ্ঠাগুলি বাস্তবায়নের নকশা সম্পর্কিত প্রশ্ন


12

আমি বিশেষত এসপ নেটওয়্যার এমভিসি তে পৃষ্ঠাগুলি প্রয়োগ বাস্তবায়ন করেছি এবং আমি সত্যিই অনুভব করেছি যে বাস্তবায়নে কম দক্ষ কিছু আছে।

সমস্ত বাস্তবায়নের মধ্যে প্রথমে নীচের মতো পৃষ্ঠা পৃষ্ঠার মান ব্যবহার করুন।

public ActionResult MostPopulars(int pageIndex,int pageSize)
{

}

আমি যে জিনিসটি ভুল অনুভব করছি তা হ'ল পেজ ইনডেক্স এবং পেজসাইজ সম্পূর্ণরূপে প্যাজিনেশন ক্লাসের সদস্য হওয়া উচিত অন্যথায় এই উপায়টি এত কার্যকরভাবে দেখায়। এছাড়াও এটি প্রয়োগের স্তরগুলিতে অপ্রয়োজনীয় পরামিতি পাসকে সহজ করে তোলে।

দ্বিতীয় জিনিসটি তারা ইন্টারফেসের নীচে ব্যবহার করে।

public interface IPagedList<T> : IList<T>
{
    int PageCount { get; }
    int TotalItemCount { get; }
    int PageIndex { get; }
    int PageNumber { get; }
    int PageSize { get; }
    bool HasPreviousPage { get; }
    bool HasNextPage { get; }
    bool IsFirstPage { get; }
    bool IsLastPage { get; }
} 

যদি আমি আমার পৃষ্ঠাগুলিটিকে বিভিন্ন ক্রিয়ায় রাউটিং করতে চাই তবে আমাকে এটিতে এনপ্যাপুলেট অ্যাকশন নাম বা এমনকি নিয়ামকের নামের জন্য নতুন ভিউ মডেল তৈরি করতে হবে। আর একটি সমাধান হতে পারে যে এই ইন্টারফেস মডেলটি দেখার জন্য প্রেরণ করার পরে প্যাসার পদ্ধতিতে কঠোরভাবে কোডারযুক্ত অ্যাকশন এবং নিয়ামককে প্যারামিটার হিসাবে নির্দিষ্ট করা উচিত তবে আমি আমার দর্শনটির সম্পূর্ণ পুনরায় ব্যবহারযোগ্যতা হারাচ্ছি কারণ এটি কেবলমাত্র একটি ক্রিয়ায় নির্ভর করে।

আরেকটি বিষয় হ'ল তারা নীচের কোডগুলিকে দেখুন

Html.Pager(Model.PageSize, Model.PageNumber, Model.TotalItemCount)

যদি মডেলটি আইপেজডলিস্ট হয় তবে কেন তারা ওভারলোড পদ্ধতিটি সরবরাহ করে না @Html.Pager(Model)বা এটি আরও ভাল @Html.Pager()। আপনি জানেন যে আমরা এইভাবে মডেল টাইপ জানি। আমি ভুল করার আগে কারণ আমি মডেল.পেজনম্বরের পরিবর্তে Model.PageIndex ব্যবহার করছিলাম।

আর একটি বড় সমস্যা হ'ল তারা দৃQu়ভাবে আইকিউয়েরেবল ইন্টারফেসের উপর নির্ভর করে। তারা কীভাবে জানবে যে আমি আমার ডেটা লেয়ারে আইকোয়ারিযোগ্য ব্যবহার করি? আমি প্রত্যাশা করব যে তারা কেবল সংগ্রহগুলি নিয়ে কাজ করেন যা পৃষ্ঠাগুলি প্রয়োগের অধ্যবসায়কে অজানা রাখে।

তাদের পৃষ্ঠাগুলি বাস্তবায়ন সম্পর্কে আমার উন্নতি ধারণাগুলি সম্পর্কে কী ভুল? এইভাবে তাদের পৃষ্ঠাগুলি বাস্তবায়ন না করার কারণ কী?


এটি আমার কাছে বেশ জটিল দেখাচ্ছে। সমস্যাটি ঠিক কী তা আমি যথেষ্ট বুঝতে পেরেছি না তবে ... আসলেই কি আপনাকে বিল্ট-ইন সহায়কগুলি ব্যবহার করার দরকার আছে? আমি জানি না যে তাদের পেজার রয়েছে। এমভিসি 1 বিটা-র প্রথম (এবং ব্যর্থ) অন্তর্নির্মিত সাহায্যকারীদের সাথে যাওয়ার চেষ্টা করার পরে আমি নিজের সাহায্যকারীদের একটি সংগ্রহ তৈরি করেছি। আমি আপনাকে একই প্রস্তাব। আপনি যদি সেই সাহায্যকারীদের সাথে লড়াই করে থাকেন তবে ওয়েব সার্ভিস নিয়ন্ত্রণের সাথে আপনি যেখানে লড়াই করছেন সেখানে ওয়েব ফর্মের চেয়ে ভাল আর কিছু নয়।

এএসপি.এনইটি এমভিসির পৃষ্ঠাগুলি সহায়কগুলির মধ্যে কোনও বিল্ড নেই, কেবলমাত্র তৃতীয় পক্ষের পৃষ্ঠাগুলি বাস্তবায়ন রয়েছে।
ফ্রেশব্লুড

সেই বিট তথ্যের জন্য আপনাকে ধন্যবাদ। প্রশ্নটি হল, আপনার কেন দরকার? আপনি নিজের মতো করে এটি প্রয়োগ করার কোনও প্রচেষ্টা নয়।

আমি কেবল জানতে চেয়েছিলাম যে আমার ধারণাগুলি সম্পর্কে কিছু ভুল আছে। আমি যদি কিছু মূল নীতিগুলি ভেঙে
ফেলেছিলাম

যদি কোনও কোডার কোনও প্রোগ্রামারের সমস্যার সমাধান করতে না পারে তবে কোডটির কোনও মূল্য নেই, আপনি এটি ব্যবহার করা ভাল better
শাহির

উত্তর:


1

যেমন ব্যবহারকারী 8685 বলেছেন: আপনার ইন্টারফেসটি বিদ্যমান এমভিসি স্টাফ এবং নীতিগুলির তুলনায় অপ্রয়োজনীয় বলে মনে হচ্ছে।

এটি ব্যবহার করে দেখুন: আইপিজডলিস্ট থেকে আপনার প্রয়োজনীয় তথ্য যেমন পৃষ্ঠা সূচক ইত্যাদি ব্যবসায়ের লজিক লেয়ারে প্রয়োগ করা উচিত এবং জেনেরিক মডেলের মাধ্যমে ভিউ / পৃষ্ঠায় খাওয়ানো উচিত যা সার্ভারে ফিরে খাওয়ানো যেতে পারে এবং সেখানে নিরাপদে castালাই এবং প্রক্রিয়াজাত করা যেতে পারে। কেন? কারণ আপনি এখানে যা পরিষ্কারভাবে সংগ্রহ করছেন তা আপনার তথ্য সিস্টেমের একটি ইনপুট এবং এটি ইউআই এর চেয়ে কম স্তরগুলির অন্তর্গত।

এই উপায়ে যাওয়ার সর্বোত্তম উপায় নাও হতে পারে এবং অবশ্যই এটি দ্রুত নয়, তবে বিমূর্ততা এবং ডেটা আর্কিটেকচারের ক্ষেত্রে আপনার কী প্রয়োজন তা দেখতে এটি আরও সহজ করে তুলতে হবে এবং এইভাবে আপনাকে অপ্রয়োজনীয়তা দূর করতে সহায়তা করবে।

এছাড়াও, বিদ্যমান সহায়তাকারীরা প্রায়শই সাধারণ ব্যবহারের জন্য খুব বেশি ওভারহেড ধারণ করে এবং কখনও কখনও বড় চিত্রটি অবলম্বন করে।


0

এই আইপেজডলিস্ট বা সাহায্যকারী জিনিসটি ব্যবহার করেন নি তবে এটি আমার গ্রহণ:

MostPopular(int pageIndex,int pageSize)একটি সুনির্দিষ্ট ইন্টারফেস জানায় হল: আমি শুধুমাত্র ফিরে আসবে পৃষ্ঠাগুলি MostPopular জিনিস। আপনি কোন পৃষ্ঠা এবং এর আকারের কথা স্পষ্টভাবে আমাকে বলবেন।

যদি তারা একটি নিয়ন্ত্রণকারী পদ্ধতি তৈরি করে থাকে MostPopular(IPagedList<T> page)তবে ইন্টারফেসটি আরও বিভ্রান্তিকর হয়ে ওঠে। আপনি নিয়ন্ত্রণকারীকে আইটেমের মোট পরিমাণ বলছেন বা না?

যখন নিয়ামক আপনার নির্দিষ্ট পেজযুক্ত ডেটা স্লাইসটি পুনরুদ্ধার করেন তখন এটি সাধারণত বিভিন্ন আইটেম যেমন মোট কতগুলি আইটেম আবিষ্কার করতে পারে। এই মুহুর্তে এ জাতীয় ডেটা কোনও দৃশ্যে ফিরিয়ে দেওয়া বুদ্ধিমান হয়ে যায়, তাই এটি কিছুটা বেছে বেছে ব্যবহার করতে পারে।

এর অর্থ এই নয় যে IPagedList হয় মডেল, এটা ঠিক হিসাবে ভাল হতে পারে অংশ একটি মডেল (এটি একটি সম্পত্তি)। কোনও পরামিতি-কম ওভারলোড না হওয়ার কারণ এটি সম্ভবত।

তারা ওভারলোড হিসাবে আইপেজডলিস্ট যুক্ত করতে পারত তবে তারপরে আপনি একটি সামান্য পেজার হেল্পারকে একটি সেট (ডেটা একটি পেজড অংশ) দিয়ে যাবেন যা প্রকৃত ডেটা নিজেই প্রয়োজন হয় না। এই মুহুর্তে কত পৃষ্ঠা / আইটেম এবং আপনি কোথায় রয়েছেন তা কেবল এটি জানা দরকার যাতে এটি পৃষ্ঠা নম্বর এবং এ জাতীয় হাইলাইট করতে পারে। আপনি সাহায্যকারীকে আরও অনেক কিছু বলতেন তবে এটির কাজটি করার জন্য এটি জানা দরকার। এটি এখন যেভাবে কাজ করে তাতে কম সংযোজন রয়েছে যা একটি ভাল জিনিস।


আমি কেবল এটিই বলতে চেয়েছিলাম যে অ্যাকশন মেথড পরামিতিটি পেজইন্ডেক্স এবং পেজসাইজ নামে একটি সম্পত্তি থাকতে পারে যাতে আমরা সহজেই মডেলটি যাচাই করতে পারি কারণ কেউ সার্ভারের কার্য সম্পাদনে আক্রমণ করার জন্য বিশাল আকারের পৃষ্ঠার আকার দিতে পারে। এবং যদি তারা প্যারামিটারলেস ওভারলোড সরবরাহ করে তবে মডেল আইপেজডলিস্ট থাকাকালীন প্যারামিটারলেস ওভারলোড ব্যবহারযোগ্য হবে। যদি আমি আরও ডেটা পাস করি তবে কোনও হেল্পারের প্রয়োজন নেই যদি কোনও ভুল হয় না। সেরা অনুশীলনের মতো কঠোর নিয়মের মতো আর কোনও নেই।
ফ্রেশব্লুড

0

প্রদত্ত যে ক্লায়েন্ট একটি পৃষ্ঠা নম্বর জিজ্ঞাসা করে এবং ক্লায়েন্টের মধ্যে তারতম্য সবচেয়ে বেশি তা আমার মনে হয় পৃষ্ঠার আকার:

public ActionResult MostPopulars(int pageIndex,int pageSize)

এটি করার একটি দুর্দান্ত বুদ্ধিমান উপায়। আমি বিভিন্নতা দেখেছি যেখানে একটি এনম (প্রথম, পরের, পূর্ব, শেষ) ব্যবহার করা হয়েছিল তবে সত্যই এটি "পেজইন্ডেক্স" বলার এক বিশ্রী পদ্ধতি।

আমি সেই পৃষ্ঠার আকারটি পুনরুত্থিত করব এবং অনেকগুলি পরিবর্তিত হওয়া উচিত, জড়িত দর্শকের উপর নির্ভর করে আপনার মোবাইল, পোর্টেবল এবং বড় স্ক্রিন ওয়ার্কস্টেশনের জন্য পৃথক ডিফল্ট হওয়া উচিত, আরও অনেক ক্ষেত্রে এটি শেষ ব্যবহারকারীকে কতগুলি আইটেম গঠন করে তা নির্বাচন করা বুদ্ধিমানের একটি পৃষ্ঠা

আমি জানি যে এমভিসি কাঠামোর মধ্যে অনেকগুলি প্যারামিটার উত্তীর্ণ হয় তবে পেজিংয়ের পুরো ধারণাটি এমভিসিকে ভেঙে দেয় - আপনার ব্যবসার যুক্তিটি পেজিং কাজ করার জন্য উপস্থাপনা সম্পর্কে জানতে হবে যাতে এটি সর্বদা অগোছালো হয়ে যায়।

আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.