এএসপি.নেট এমভিসিতে আংশিক দৃশ্যে কীভাবে পরামিতিগুলি পাস করবেন?


94

মনে করুন যে আমার এই আংশিক দৃষ্টিভঙ্গি রয়েছে:

Your name is <strong>@firstName @lastName</strong>

যা কেবলমাত্র এই ক্রিয়াকলাপের মাধ্যমে সন্তানের মাধ্যমে অ্যাক্সেসযোগ্য:

[ChildActionOnly]
public ActionResult FullName(string firstName, string lastName)
{

}

এবং আমি এই আংশিক দৃশ্যটি অন্য একটি ভিউয়ের সাথে এটির সাথে ব্যবহার করতে চাই:

@Html.RenderPartial("FullName")

অন্য কথায়, আমি আংশিক দর্শন থেকে প্রথম নাম উত্তর লাস্টনেম পাস করতে সক্ষম হতে চাই। আমি এটা কিভাবে করব?


খুব ঘনিষ্ঠভাবে সম্পর্কিত প্রশ্ন: stackoverflow.com/questions/1909134/...
ক্রিস Moschini

উত্তর:


78

এই ওভারলোডটি ব্যবহার করুন ( RenderPartialExtensions.RenderPartialএমএসডিএন তে ):

public static void RenderPartial(
    this HtmlHelper htmlHelper,
    string partialViewName,
    Object model
)

সুতরাং:

@{Html.RenderPartial(
    "FullName",
    new { firstName = model.FirstName, lastName = model.LastName});
}

4
হ্যাঁ, চেষ্টা করে দেখুন, তবে আমি 'সিস্টেম.ওয়েব. ওয়েলপেজ.সাহেবের জন্য সেরা ওভারলোডেড পদ্ধতি ম্যাচ পেয়ে যাচ্ছি । আমি কীভাবে নিয়ন্ত্রণকারী পদ্ধতি বাস্তবায়ন করব? এর ইনপুট পরামিতি থাকা উচিত?
সাইদ নেমতি

19
সুতরাং আপনি যেমন প্যারামিটারটি পাস করেছেন, আপনি কীভাবে এটি আংশিক দৃষ্টিতে অ্যাক্সেস করবেন?
বুর্জুয়া

9
আপনারও বন্ধনী দরকার নেই। অনেক সুন্দর @Html.Partial()হিসাবে একই @{Html.RenderPartial();}। তাদের একই ওভারলোডও রয়েছে।
স্মাডার্জার

7
আপনি কীভাবে অ্যাক্সেস করবেন? Model.firstNameএবং তাদের মত একটি ব্যতিক্রম ছুঁড়ে যেobject doesn't have a 'firstName' property
ashes999

4
@ অ্যাশেজ৯৯৯ আপনি ভিউডাটার মাধ্যমে অ্যাক্সেস করতে পারবেন ... তবে কেবল আপনার ব্যবহারের জন্য নির্দিষ্ট একটি মডেল তৈরি করে জিনিসগুলিকে পরিষ্কার রাখতে সহায়তা করুন। এটি একবার ব্যবহার করুন এবং কেউ কেউ এটিকে টস আপ হিসাবে বিবেচনা করতে পারে তবে এটি এর চেয়ে বেশি বার ব্যবহার করুন এবং এটি কোনও মস্তিষ্কের নয়।
টেড

85

আপনি ভিউডেটা ব্যবহার করতে চাইলে এটি করার আরও একটি উপায় এখানে রয়েছে:

@Html.Partial("~/PathToYourView.cshtml", null, new ViewDataDictionary { { "VariableName", "some value" } })

এবং পাস করা মানগুলিতে পুনরুদ্ধার করতে:

@{
    string valuePassedIn = this.ViewData.ContainsKey("VariableName") ? this.ViewData["VariableName"].ToString() : string.Empty;
}

ধন্যবাদ, আপনার উত্তর এর জন্য একটি মডেল তৈরি না করে কৌশলটি করেছে।
alvarodms

সমস্ত উদাহরণগুলির মধ্যে, এটি কেবলমাত্র আমার জন্য সম্পূর্ণরূপে কাজ করেছিল। ধন্যবাদ
ব্রায়ানলেগ

এটি আমি খুঁজছিলাম, কোনও মডেল নয়। আপনাকে ধন্যবাদ :)
অনুপম রায়

দুর্দান্ত উত্তর - তবে এমভিসি 4 দিয়ে এইচটিএমএল. পার্টিশিয়ালের পরিবর্তে এইচটিএমএল.রেন্ডার পার্টিয়াল ব্যবহার করুন
গ্রাহাম লাইট

25

আপনার একটি ভিউ মডেল তৈরি করতে হবে। এরকম কিছু করা উচিত ...

public class FullNameViewModel
{
     public string FirstName { get; set; }
     public string LastName { get; set; }

     public FullNameViewModel() { } 

     public FullNameViewModel(string firstName, string lastName)
     {
          this.FirstName = firstName;
          this.LastName = lastName;
     }

}

তারপরে আপনার ক্রিয়া ফলাফল থেকে মডেলটি পাস করুন

return View("FullName", new FullNameViewModel("John", "Doe"));

ও আপনাকে অ্যাক্সেস করতে সক্ষম হবে @Model.FirstNameএবং @Model.LastNameসেই অনুযায়ী।


14

নিশ্চিত করুন যে আপনি এইচটিএমএল.রেন্ডার পার্টিশিয়ালের চারপাশে add add যুক্ত করেছেন:

@{Html.RenderPartial("FullName", new { firstName = model.FirstName, lastName = model.LastName});}

না

@Html.RenderPartial("FullName", new { firstName = model.FirstName, lastName = model.LastName});

4
আপনার আংশিক দেখার সংজ্ঞাটি কেমন দেখাচ্ছে? @ মডেল ঘোষণা কী? এটির বেনামে ...
এলিজাবেথ

হ্যাঁ যোগ করার বিষয়টি নিশ্চিত করুন { }, আমি এই নিবন্ধটি না পাওয়া পর্যন্ত সময় নষ্ট করেছি
শাইজুট

5

নিম্নলিখিতটি আমার জন্য ডটনেট 1.0.1 এ কাজ করছে :

./ourView.cshtml

@Html.Partial(
  "_ourPartial.cshtml",
  new ViewDataDictionary(this.Vi‌​ewData) {
    {
      "hi", "hello" 
    } 
  }
);

./_ourPartial.cshtml

<h1>@this.ViewData["hi"]</h1>

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