ASP.NET এমভিসি রেজার বিন্যাসে মডেল পাস করুন


98

আমি যা দেখছি তা হ'ল স্ট্রিং বিন্যাসের সম্পত্তি। তবে আমি কীভাবে কোনও মডেলকে স্পষ্টভাবে বিন্যাসে পাস করতে পারি?


আমার কাছে বিভিন্ন মডেল সহ একই পৃষ্ঠা রয়েছে তবে একই লেআউট
সাইবেরিয়ানগুই

4
এই স্ট্যাকওভারফ্লো প্রশ্নটি আপনি যা জিজ্ঞাসা করছেন তার জবাব বলে মনে হচ্ছে: stackoverflow.com/questions/13225315/…
পল

আমার এই সমস্যা হচ্ছে না Modelপাওয়া যায় _Layout। আমি এমভিসি 5 ব্যবহার করছি।
টুডমো

উত্তর:


66

দেখে মনে হচ্ছে আপনি যদি নিজের সমস্যাটি থেকে থাকেন তবে আপনার ভিউ মডেলগুলিকে কিছুটা ভুল করেছেন।

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


11
"ব্যক্তিগতভাবে আমি কোনও লেআউট পৃষ্ঠা টাইপ করব না।" কেন? মানে, সমস্ত পৃষ্ঠায় প্রদর্শিত সাইড ডায়নামিক সামগ্রী আপনি কীভাবে পরিচালনা করবেন? আপনি কি ভিউ থেকে নিয়ন্ত্রণকারীদের এড়িয়ে যান? / হতে পারে আপনি লেআউটটি থেকে রেন্ডারঅ্যাকশনটি ব্যবহার করতে চান? (আমি এখনই এটি
দেখছি

53
@ ইগ্লাসিয়াস, আমি কী ধরণের বিষয়বস্তু নিয়ে কথা বলি তার উপর নির্ভর করে আমি যে সমাধানটি ব্যবহার করি তা ভিন্ন। তবে একটি সাধারণ সমাধান হ'ল অংশটি রেন্ডার করার জন্য রেন্ডারএ্যাকশন ব্যবহার করা যা লেআউট পৃষ্ঠায় তাদের নিজস্ব ডেটা প্রয়োজন। লেআউট পৃষ্ঠাটি টাইপ করা আমার পছন্দ না হওয়ার কারণটি হ'ল এটি আপনাকে সমস্ত নির্দিষ্ট ভিউ মডেলগুলিতে সর্বদা একটি "বেস" ভিউ মডেলটি উত্তরাধিকারী করতে বাধ্য করবে। আমার অভিজ্ঞতাতে এটি সাধারণত খুব ভাল ধারণা নয় এবং ডিজাইন পরিবর্তন করতে দেরি হওয়ার সময় আপনার সমস্যাগুলি আসবে (বা এটি বেশি দিন লাগবে)।
ম্যাটিয়াস জ্যাকোবসন

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

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

4
লিগ্যাসি কোডে কাজ করা যেখানে ঠিক এটি হয়েছে। এটা দুঃস্বপ্ন। আপনার বিন্যাস টাইপ করবেন না ... খুশি!

81
  1. আপনি যে জাতীয় টাইপ ব্যবহার করতে চান তার সাথে মেইনলাউটভিউমোডেল (বা যাই হোক না কেন) নামে পরিচিত আপনার নিয়ন্ত্রকের (বা বেস কন্ট্রোলার) একটি সম্পত্তি যুক্ত করুন।
  2. আপনার নিয়ামক (বা বেস কন্ট্রোলার) এর কনস্ট্রাক্টারে টাইপটি ইনস্ট্যান্ট করুন এবং এটিকে সম্পত্তিতে সেট করুন।
  3. এটিকে ভিউটাটা ক্ষেত্র (অথবা ভিউব্যাগ) এ সেট করুন
  4. লেআউট পৃষ্ঠায়, সেই সম্পত্তিটিকে আপনার প্রকারে ফেলে দিন।

উদাহরণ: নিয়ন্ত্রক:

public class MyController : Controller
{
    public MainLayoutViewModel MainLayoutViewModel { get; set; }

    public MyController()
    {
        this.MainLayoutViewModel = new MainLayoutViewModel();//has property PageTitle
        this.MainLayoutViewModel.PageTitle = "my title";

        this.ViewData["MainLayoutViewModel"] = this.MainLayoutViewModel;
    }

}

লেআউট পৃষ্ঠার উদাহরণ শীর্ষ

@{
var viewModel = (MainLayoutViewModel)ViewBag.MainLayoutViewModel;
}

এখন আপনি টাইপ করা অবজেক্টটিতে সম্পূর্ণ অ্যাক্সেসের সাথে আপনার লেআউট পৃষ্ঠায় 'ভিউমোডেল' পরিবর্তনশীলটি উল্লেখ করতে পারেন।

আমি এই পদ্ধতির পছন্দ করি কারণ এটি নিয়ামক যা লেআউটটিকে নিয়ন্ত্রণ করে, যখন পৃথক পৃষ্ঠার ভিডমোডালগুলি লেআউট অগ্নিস্টিক থাকে।

এমভিসি কোরের জন্য নোটস


এমভিসি কোর প্রতিটি ক্রিয়াকে প্রথমবার বলার পরে ভিউডাটা / ভিউব্যাগের বিষয়বস্তুগুলি দূরে সরিয়ে দেয় appears এর অর্থ হ'ল কনস্ট্রাক্টরটিতে ভিউ ডেটা নির্ধারণ করা কাজ করে না। যা কাজ করে তা হ'ল ব্যবহার করে IActionFilterএবং ঠিক একই কাজটি করে OnActionExecuting। আপনার MyActionFilterউপর রাখুন MyController

public class MyActionFilter: Attribute, IActionFilter
    {
        public void OnActionExecuted(ActionExecutedContext context)
        {
        }

        public void OnActionExecuting(ActionExecutingContext context)
        {
            var myController= context.Controller as MyController;

            if (myController!= null)
            {
                myController.Layout = new MainLayoutViewModel
                {

                };

                myController.ViewBag.MainLayoutViewModel= myController.Layout;
            }
        }
    }

4
আমি তোমাকে পেয়েছি ... তবে গতিশীলতা / কাস্টগুলি রেজার পৃষ্ঠাগুলির বেশ কেন্দ্রীয়। আপনি যা করতে পারেন তা হ'ল মেইনলাউটভিউমোডেলে একটি স্থিতিশীল পদ্ধতি যুক্ত করা যা আপনার জন্য castালাই করে (যেমন মেইনলাউটভিউমোডেল rom ফর্মভিউব্যাগ (এটি.ভিউবাগ)) সুতরাং অন্তত কাস্ট এক জায়গায় ঘটছে এবং আপনি সেখানে ব্যতিক্রমগুলি আরও ভালভাবে পরিচালনা করতে পারেন।
ব্ল্যাকজ্যাককেট

@ ব্ল্যাকজ্যাককেটম্যাক ভাল পন্থা এবং আমি এটি উপরেরটি ব্যবহার করে এবং কিছু সংশোধন করার জন্য অর্জন করেছি bcoz আমার একটি পৃথক প্রয়োজন ছিল এবং এটি সত্যই আমাকে ধন্যবাদ জানাতে সাহায্য করেছিল। টেম্পাটাটা ব্যবহার করে আমরা কি একইরকম উপলব্ধি করতে পারি যদি হ্যাঁ হয় তবে কীভাবে না হয় তবে প্লিজ আমাকে বলবেন কেন এটি ব্যবহার করা যাচ্ছে না। আবার ধন্যবাদ.
যাকের

4
@ ব্যবহারকারী - টেম্পাটাটা সেশন ব্যবহার করে এবং সর্বদা আমার কাছে কিছুটা ক্লডজি বোধ করে। আমার বোধগম্যতা এটি 'একবার পঠনযোগ্য' যাতে আপনি এটি পড়ার সাথে সাথে এটি এটি সেশন থেকে সরিয়ে দেয় (বা সম্ভবত অনুরোধটি শেষ হওয়ার সাথে সাথে)। আপনি এসকিএল সার্ভারে (বা ডায়নামো ডিবি) সেশন সংরক্ষণ করার সম্ভাবনা রয়েছে তাই আপনি মাস্টারলাউটভিউমোডেলকে সিরিয়ালায়িত করতে চাইবেন তা বিবেচনা করুন ... আপনি যা চান সম্ভবত তা চান না। সুতরাং মূলত, ভিউডাটাতে সেট করে এটি কিছুটা নমনীয় অভিধানে মেমরির মধ্যে সঞ্চয় করে, যা বিলটি ফিট করে।
ব্ল্যাকজ্যাককেট

যথেষ্ট সহজ, আমি আপনার সমাধানটি ব্যবহার করেছি তবে, আমি এমভিসিতে নতুন তাই আমি ভাবছি কি এটি একটি ভাল অনুশীলন হিসাবে বিবেচিত হয়? বা কমপক্ষে খারাপ না?
করিম এজি

4
হাই করিম এজি, আমি মনে করি এটি উভয়ই কিছুটা। আমি ভিউডাটাতে স্টাফগুলি একটি খারাপ অনুশীলন হিসাবে বিবেচনা করার কথা বিবেচনা করি (এটি ট্র্যাক করা শক্ত, অভিধানভিত্তিক, প্রকৃতপক্ষে টাইপ করা হয়নি) ... তবে ... আপনার সমস্ত বিন্যাসের বৈশিষ্ট্যকে দৃ strongly়ভাবে টাইপ করা বিষয়টিতে টাইপ করা একটি দুর্দান্ত অনুশীলন। সুতরাং আমি এই বলে আপোষ করছি, ঠিক আছে, আসুন সেখানে একটি জিনিস সঞ্চয় করি, তবে এটির বাকীটি একটি ভাল দৃ strongly়ভাবে টাইপ করা ভিউমোডেলে লক করে রাখা উচিত।
ব্ল্যাকজ্যাককেট 18

30

এটি বেশ বেসিক স্টাফ, আপনাকে যা করতে হবে তা হ'ল বেস ভিউ মডেল তৈরি করা এবং সমস্ত নিশ্চিত করা! এবং আমি সব বোঝাতে চাই! আপনার মতামত যা কখনও সেই লেআউটটি ব্যবহার করে তা সেই মডেলটি ব্যবহার করে এমন মতামত গ্রহণ করবে!

public class SomeViewModel : ViewModelBase
{
    public bool ImNotEmpty = true;
}

public class EmptyViewModel : ViewModelBase
{
}

public abstract class ViewModelBase
{
}

_লয়আউট.একএসটিএমএলে:

@model Models.ViewModelBase
<!DOCTYPE html>
  <html>
  and so on...

হোম নিয়ন্ত্রকের সূচক পদ্ধতিতে (উদাহরণস্বরূপ):

    public ActionResult Index()
    {
        var model = new SomeViewModel()
        {
        };
        return View(model);
    }

সূচক

@model Models.SomeViewModel

@{
  ViewBag.Title = "Title";
  Layout = "~/Views/Shared/_Layout.cshtml";
}

<div class="row">

আমি একমত নই যে _লেআউটে একটি মডেল পাস করা একটি ত্রুটি, কিছু ব্যবহারকারীর তথ্য পাস করা যায় এবং ডেটাগুলি নিয়ন্ত্রণকারীদের উত্তরাধিকার শৃঙ্খলে পপুলেশন করা যায় তাই কেবলমাত্র একটি বাস্তবায়ন প্রয়োজন।

স্পষ্টতই আরও উন্নত উদ্দেশ্যে আপনার ইনজেকশন ব্যবহার করে কাস্টম স্ট্যাটিক কনটেক্সট তৈরি করা বিবেচনা করা উচিত এবং সেই মডেল নেমস্পেসটিকে _Layout.cshtml এ অন্তর্ভুক্ত করা উচিত।

তবে বেসিক ব্যবহারকারীদের জন্য এটি কৌশলটি করবে


আমি আপনার সাথে একমত. ধন্যবাদ.
সেবাস্তিয়ান গেরেরো

4
আপ এবং কেবল উল্লেখ করতে চাই যে এটি বেস ক্লাসের পরিবর্তে একটি ইন্টারফেসের সাথেও কাজ করে
ভ্ল্যাডএল

29

একটি সাধারণ সমাধান হ'ল একটি বেস ভিউ মডেল তৈরি করা যাতে লেআউট ফাইলটিতে ব্যবহৃত বৈশিষ্ট্য থাকে এবং তারপরে বেস মডেল থেকে संबंधित পৃষ্ঠাগুলিতে ব্যবহৃত মডেলগুলির উত্তরাধিকারী হয়।

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

আমার সমাধানটি বেস ভিউ মডেল দিয়ে শুরু হয়:

public class LayoutModel
{
    public LayoutModel(string title)
    {
        Title = title;
    }

    public string Title { get;}
}

আমি তারপরে যা ব্যবহার করি তা হ'ল লেআউটমোডেলের একটি জেনেরিক সংস্করণ যা লেআউটমোডেল থেকে উত্তরাধিকার সূত্রে প্রাপ্ত:

public class LayoutModel<T> : LayoutModel
{
    public LayoutModel(T pageModel, string title) : base(title)
    {
        PageModel = pageModel;
    }

    public T PageModel { get; }
}

এই সমাধানের সাথে আমি লেআউট মডেল এবং মডেলটির মধ্যে উত্তরাধিকার থাকার প্রয়োজনটি সংযোগ বিচ্ছিন্ন করে দিয়েছি।

সুতরাং এখন আমি এগিয়ে যেতে এবং লেআউটপ্যাশটিটিএমএলে লেআউটমোডেলটি এর মতো ব্যবহার করতে পারি:

@model LayoutModel
<!doctype html>
<html>
<head>
<title>@Model.Title</title>
</head>
<body>
@RenderBody()
</body>
</html>

এবং একটি পৃষ্ঠায় আপনি জেনেরিক লেআউটমোডেলটি এর মতো ব্যবহার করতে পারেন:

@model LayoutModel<Customer>
@{
    var customer = Model.PageModel;
}

<p>Customer name: @customer.Name</p>

আপনার নিয়ন্ত্রক থেকে আপনি কেবলমাত্র লেআউটমোডেল টাইপের একটি মডেল ফিরে আসবেন:

public ActionResult Page()
{
    return View(new LayoutModel<Customer>(new Customer() { Name = "Test" }, "Title");
}

4
একাধিক উত্তরাধিকার ইস্যু এবং কীভাবে এটি মোকাবেলা করার জন্য বোনাস! এটি মাপদণ্ডের জন্য আরও ভাল উত্তর।
ব্রেট স্পেন্সার

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

11

আপনার নিজের নির্দিষ্ট নিয়ামককে আংশিক দৃশ্যে প্রয়োজনীয় মডেলটি পাস করার সাথে আপনি কেবল একটি নতুন আংশিক দৃশ্য যুক্ত করবেন না কেন এবং অবশেষে রেন্ডার পার্টিশিয়াল বা রেন্ডারঅ্যাকশন ব্যবহার করে আপনার লেআউট.এইচটিএমটিএলে উল্লিখিত আংশিক দৃশ্যটি রেন্ডার করবেন?

আমি লগইন হওয়া ব্যবহারকারীর তথ্য যেমন নাম, প্রোফাইল ছবি ইত্যাদি দেখানোর জন্য এই পদ্ধতিটি ব্যবহার করি


4
আপনি এই দয়া করে বিস্তারিত বলতে পারেন? আমি এমন কোনও ব্লগ পোস্টের একটি লিঙ্কের প্রশংসা করব যা এই কৌশলটি দিয়ে যায়
J86

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

4

পুরানো প্রশ্ন তবে কেবলমাত্র এমভিসি 5 বিকাশকারীদের জন্য সমাধানটি উল্লেখ করার জন্য, আপনি Modelসম্পত্তিটি দেখুন হিসাবে ব্যবহার করতে পারেন ।

Modelউভয় দেখতে ও লেআউট সম্পত্তি একই সঙ্গে assosiated হয় ViewDataDictionaryযাতে আপনি বিন্যাস পৃষ্ঠায় আপনার মডেল পাস কোন অতিরিক্ত কাজ করতে হবে না, বস্তু, এবং আপনি ডিক্লেয়ার করতে হবে না @model MyModelNameলেআউট।

তবে লক্ষ্য করুন যে আপনি যখন @Model.XXXবিন্যাসটিতে ব্যবহার করবেন তখন ইন্টেলিসেন্স প্রসঙ্গ মেনু উপস্থিত হবে না কারণ Modelএখানে যেমন একটি গতিশীল অবজেক্ট রয়েছে ViewBag


2

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

public class MyLayoutModel {
    public User CurrentUser {
        get {
            .. get the current user ..
        }
    }
}

তারপর দেখুন

@{
    // Or get if from your DI container
    var myLayoutModel = new MyLayoutModel();
}

নেট কোর আপনি এমনকি এড়িয়ে যেতে পারেন এবং নির্ভরতা ইনজেকশন ব্যবহার করতে পারেন।

@inject My.Namespace.IMyLayoutModel myLayoutModel

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


2

এটি সংরক্ষণাগারভুক্ত করার আরও একটি উপায় রয়েছে।

  1. সমস্ত নিয়ন্ত্রকের জন্য কেবল বেসকন্ট্রোলার শ্রেণি প্রয়োগ করুন

  2. ইন BaseControllerবর্গ একটি পদ্ধতি যে উদাহরণস্বরূপ মত একটি মডেল বর্গ ফেরৎ তৈরি করুন।

public MenuPageModel GetTopMenu() 
{    

var m = new MenuPageModel();    
// populate your model here    
return m; 

}
  1. এবং Layoutপৃষ্ঠাতে আপনি এই পদ্ধতিটি কল করতে পারেনGetTopMenu()
@using GJob.Controllers

<header class="header-wrapper border-bottom border-secondary">
  <div class="sticky-header" id="appTopMenu">
    @{
       var menuPageModel = ((BaseController)this.ViewContext.Controller).GetTopMenu();
     }
     @Html.Partial("_TopMainMenu", menuPageModel)
  </div>
</header>

0

আসুন ধরে নিই আপনার মডেলটি অবজেক্টগুলির একটি সংগ্রহ (বা সম্ভবত কোনও একক বস্তু)। মডেলের প্রতিটি বস্তুর জন্য নিম্নলিখিতটি করুন।

1) আপনি যে বস্তুটি প্রদর্শন করতে চান তা ভিউব্যাগে রাখুন। উদাহরণ স্বরূপ:

  ViewBag.YourObject = yourObject;

২) _আউটআর.সি.এস.টি.এম.এল এর শীর্ষে একটি ব্যবহারের বিবৃতি যুক্ত করুন যা এতে আপনার অবজেক্টের জন্য শ্রেণি সংজ্ঞা রয়েছে। উদাহরণ স্বরূপ:

আপনার অ্যাপ্লিকেশন ব্যবহার করে

3) আপনি যখন নিজের অবজেক্টটিকে রেফারেন্স দিন _ লেআউট এ castালুন। আপনি যা করেছেন তার কারণে আপনি কাস্ট প্রয়োগ করতে পারেন (2)।


-2
public interface IContainsMyModel
{
    ViewModel Model { get; }
}

public class ViewModel : IContainsMyModel
{
    public string MyProperty { set; get; }
    public ViewModel Model { get { return this; } }
}

public class Composition : IContainsMyModel
{
    public ViewModel ViewModel { get; set; }
}

আপনার বিন্যাসে আইকনটেনসমাইমোডেল ব্যবহার করুন।

সমাধান হয়েছে। ইন্টারফেস নিয়ম।


4
আপনি কেন নিচে ভোট পেয়েছিলেন তা নিশ্চিত নয়। আপনি এখানে যা করেছেন তার অনুরূপ একটি ইন্টারফেস ব্যবহার করে আমার প্রসঙ্গে কাজ করেছেন।
কস্টা

-6

উদাহরণ স্বরূপ

@model IList<Model.User>

@{
    Layout="~/Views/Shared/SiteLayout.cshtml";
}

নতুন @ মডেল নির্দেশিকা সম্পর্কে আরও পড়ুন


তবে যদি আমি সংগ্রহের প্রথম উপাদানটি লেআউট মডেলটিতে পাস করতে চাই?
সাইবেরিয়ানগুই

আপনাকে আপনার কন্ট্রোলারে প্রথম উপাদানটি আনতে হবে এবং @ মডেল মডেলটিতে মডেলটি সেট করতে হবে ser ব্যবহারকারীর
মার্টিন ফাবিক

তবে আমি চাই আমার পৃষ্ঠাটি আইলিস্ট এবং লেআউট - কেবলমাত্র প্রথম উপাদান
সাইবেরিয়ানগুই

যদি আমি আপনাকে সঠিকভাবে বুঝতে পারি তবে আপনি চান যে মডেলটি আইলিস্ট হয়ে উঠুক <সোমথিং> এবং এই দৃষ্টিতে সংগ্রহের প্রথম উপাদানটি পান? যদি তাই হয় তবে ব্যবহার করুন @ মডেল.প্রথম ()
মার্টিন ফাবিক

6
পোস্টারটি জিজ্ঞাসা করছিল যে কীভাবে _আলআউট.সি.এস.টি.এম.এল পৃষ্ঠায় কোনও মডেলটি পাস করতে হবে .. বিন্যাসটি ব্যবহার করে এমন প্রধান দৃষ্টিভঙ্গি নয়।
খাঁটি.ক্রোমে
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.