এএসপি.নেট এমভিসি আংশিক দর্শন: ইনপুট নেম উপসর্গ


120

ধরুন আমার মতো ভিউমোডেল রয়েছে

public class AnotherViewModel
{
   public string Name { get; set; }
}
public class MyViewModel
{
   public string Name { get; set; }
   public AnotherViewModel Child { get; set; }
   public AnotherViewModel Child2 { get; set; }
}

ভিউতে আমি এর সাথে একটি আংশিক রেন্ডার করতে পারি

<% Html.RenderPartial("AnotherViewModelControl", Model.Child) %>

আংশিকভাবে আমি করব

<%= Html.TextBox("Name", Model.Name) %>
or
<%= Html.TextBoxFor(x => x.Name) %>

তবে, সমস্যাটি হ'ল মডেল বাইন্ডার সঠিকভাবে কাজ করার জন্য আমার নাম = "চাইল্ড.নাম" থাকা দরকার থাকা অবস্থায় উভয়ই নাম = "নাম" রেন্ডার করে। বা, নাম = "চাইল্ড 2.নাম" যখন আমি একই আংশিক দৃশ্য ব্যবহার করে দ্বিতীয় সম্পত্তি রেন্ডার করি।

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

<% Html.RenderPartial("AnotherViewModelControl", Model.Child) %>

স্বয়ংক্রিয়ভাবে সঠিক "শিশু" যুক্ত হবে। উত্পন্ন নাম / আইডি স্ট্রিংগুলির উপসর্গ?

আমি 3-তম পার্টির ভিউ ইঞ্জিন এবং লাইব্রেরি সহ যে কোনও সমাধান গ্রহণ করতে পারি - আমি আসলে স্পার্ক ভিউ ইঞ্জিন (এর ম্যাক্রোগুলি ব্যবহার করে সমস্যাটি "সমাধান") করি এবং সেখানে কোনও সমাধান পাইনি। এক্স ফোর্মস, ইনপুটবিল্ডার, এমভিসি ভি 2 - এই কার্যকারিতাটি সরবরাহ করে এমন কোনও সরঞ্জাম / অন্তর্দৃষ্টি দুর্দান্ত হবে।

বর্তমানে আমি এটিকে নিজের কোডিংয়ের বিষয়ে ভাবছি তবে এটি সময়ের অপচয় হিসাবে মনে হচ্ছে, আমি বিশ্বাস করতে পারি না যে এই তুচ্ছ জিনিসটি ইতিমধ্যে বাস্তবায়িত হয়নি।

অনেকগুলি ম্যানুয়াল সমাধান উপস্থিত থাকতে পারে এবং সেগুলি সবই স্বাগত। উদাহরণস্বরূপ, আমি আমার পার্টিয়ালগুলিকে আইপিআরটিভিউমোডেল <T> {পাবলিক স্ট্রিং উপসর্গের ভিত্তিতে বাধ্য করতে পারি; টি মডেল; }। তবে আমি বরং কিছু বিদ্যমান / অনুমোদিত সমাধান পছন্দ করব।

আপডেট: একই উত্তর এখানে নেই

উত্তর:


110

আপনি এর দ্বারা এইচটিএমএল সহায়ক সহায়ক বর্ধন করতে পারেন:

using System.Web.Mvc.Html


 public static MvcHtmlString PartialFor<TModel, TProperty>(this HtmlHelper<TModel> helper, System.Linq.Expressions.Expression<Func<TModel, TProperty>> expression, string partialViewName)
    {
        string name = ExpressionHelper.GetExpressionText(expression);
        object model = ModelMetadata.FromLambdaExpression(expression, helper.ViewData).Model;
        var viewData = new ViewDataDictionary(helper.ViewData)
        {
            TemplateInfo = new System.Web.Mvc.TemplateInfo
            {
                HtmlFieldPrefix = name
            }
        };

        return helper.Partial(partialViewName, model, viewData);

    }

এবং কেবল আপনার মতামত এ এটি ব্যবহার করুন:

<%= Html.PartialFor(model => model.Child, "_AnotherViewModelControl") %>

এবং আপনি সবকিছু ঠিক আছে দেখতে পাবেন!


17
নেস্টেড আংশিক রেন্ডারিংয়ের জন্য এটি ভুল হবে। পুরানো উপসর্গটিতে আপনাকে নতুন উপসর্গটি যুক্ত করতে হবেhelper.ViewData.TemplateInfo.HtmlFieldPrefix{oldprefix}.{newprefix}
ইভান জ্লেতেভ

@ মাহমুদ আপনার কোড দুর্দান্ত কাজ করে তবে আমি দেখতে পেলাম যে আংশিক কোডটি কার্যকর করার সময় যখন ভিউটাটা / ভিউব্যাগটি খালি ছিল। আমি দেখতে পেয়েছি যে এইচটিএমএলহেল্পার <টিমোডেল> টাইপের সহায়ক সাহায্যকারীর একটি নতুন সম্পত্তি ভিউডাটা রয়েছে, যা বেস মডেলের গোপন করে। তার সাথে, আমি প্রতিস্থাপন new ViewDataDictionary(helper.ViewData)করেছি new ViewDataDictionary(((HtmlHelper)helper).ViewData)। আপনি কি তাতে কোনও সমস্যা দেখছেন?
প্যাট নেওয়েল

@ ইভানজ্লেভ ধন্যবাদ পোস্টটি পরীক্ষার পরে আমি সংশোধন করব।
মাহমুদ মোরাভেজ 22'12

2
পছন্দ করুন আপনি নামটি সেট করার আগে আপনার করা উচিতstring oldPrefix = helper.ViewData.TemplateInfo.HtmlFieldPrefix; if (oldPrefix != "") name = oldPrefix + "." + name;
কেনেথেক

2
নেস্টেড টেমপ্লেটের জন্য একটি সহজ ফিক্স HtmlFieldPrefix = helper.ViewContext.ViewData.TemplateInfo.GetFullHtmlFieldName (নাম) ব্যবহার করা
আমন মহাজন

95

এখনও অবধি, আমি সাম্প্রতিক পোস্টটি পেয়েছি একই জিনিসটি অনুসন্ধান করছিলাম:

http://davybrion.com/blog/2011/01/prefixing-input-elements-of-partial-views-with-asp-net-mvc/

<% Html.RenderPartial("AnotherViewModelControl", Model.Child, new ViewDataDictionary
{
    TemplateInfo = new System.Web.Mvc.TemplateInfo { HtmlFieldPrefix = "Child1" }
})
%>

3
লিঙ্কটির জন্য ধন্যবাদ, এটি এখন পর্যন্ত সর্বোত্তম বিকল্পটি এখানে তালিকাভুক্ত হয়েছে
বিজেড

32
এই পার্টিতে খুব দেরী, তবে আপনি যদি এই পদ্ধতিটি করেন তবে আপনার ViewDataDictionaryবর্তমান নির্মাণকারী কনস্ট্রাক্টরটি ব্যবহার করা উচিত ViewData, অথবা আপনি মডেল স্টেটের ত্রুটি, বৈধতা ডেটা ইত্যাদি
হারাবেন

9
ভ্যামলিনের মন্তব্যে বিল্ডিং। আপনি নেস্টেড উপসর্গ যেমন পাস করতে পারেন (যেমনটি ভ্রাবাইটি প্রাইস হ'ল): এইচটিএমএল.রেন্ডার পার্টিয়াল ("আরেকটি ভিউমোডেলকন্ট্রোল", মডেল.প্রপ্যাক্স, নতুন ভিউডাটাডিয়ায়িয়ার (ভিউ ডেটা) {T .HtmlFeldPrefix সহ) ViewData.TemplateInfo.HtmlFieldPrefix & ".PropX"}})
হাবসন ব্রোপা

1
দুর্দান্ত উত্তর, +1। @ ভ্যামলিনের মন্তব্যটি অ্যাকাউন্টে নেওয়ার জন্য এটি সম্পাদনযোগ্য হবে
কেন

1
মনে রাখবেন যে কোনও নিয়ামকের কাছ থেকে আপনার যদি এই আংশিকটি ফিরে আসতে হয় তবে আপনাকেও এই উপসর্গটি সেখানে সেট করতে হবে। stackoverflow.com/questions/6617768/…
দ্য মফিন ম্যান

12

ইভান জ্লেতেভের মন্তব্য সহ মাহমুদ মোরাভেজের উত্তরের ভিত্তিতে আমার উত্তর।

    public static MvcHtmlString PartialFor<TModel, TProperty>(this HtmlHelper<TModel> helper, System.Linq.Expressions.Expression<Func<TModel, TProperty>> expression, string partialViewName)
    {
            string name = ExpressionHelper.GetExpressionText(expression);
            object model = ModelMetadata.FromLambdaExpression(expression, helper.ViewData).Model;
            StringBuilder htmlFieldPrefix = new StringBuilder();
            if (helper.ViewData.TemplateInfo.HtmlFieldPrefix != "")
            {
                htmlFieldPrefix.Append(helper.ViewData.TemplateInfo.HtmlFieldPrefix);
                htmlFieldPrefix.Append(name == "" ? "" : "." + name);
            }
            else
                htmlFieldPrefix.Append(name);

            var viewData = new ViewDataDictionary(helper.ViewData)
            {
                TemplateInfo = new System.Web.Mvc.TemplateInfo
                {
                    HtmlFieldPrefix = htmlFieldPrefix.ToString()
                }
            };

        return helper.Partial(partialViewName, model, viewData);
    }

সম্পাদনা করুন: নেহাত আংশিক রেন্ডারিংয়ের জন্য মোহামাউদের উত্তরটি ভুল। আপনাকে পুরানো উপসর্গটিতে নতুন উপসর্গ যুক্ত করতে হবে, এটি কেবল প্রয়োজন হলেই। সর্বশেষ উত্তরগুলিতে এটি পরিষ্কার ছিল না (:


6
উপরের বিদ্যমান উত্তরের উপর কীভাবে উন্নতি হয় সে সম্পর্কে যদি আপনি বিশদটি বর্ণনা করেন তবে এটি অন্যদের জন্য সহায়ক ।
লেগ

2
ফ্যাট-ফিঙ্গার্ড কপিরাইট-পেস্ট ত্রুটির পরে, এটি এএসপি.নেট এমভিসি ৫ +১ এর জন্য পুরোপুরি কাজ করেছে।
গ্রেগ বার্গার্ট 21

9

এমভিসি 2 ব্যবহার করে আপনি এটি অর্জন করতে পারেন।

এখানে দৃ strongly়ভাবে টাইপ করা ভিউ:

<%@ Page Title="" Language="C#" MasterPageFile="~/Views/Shared/Site.Master" Inherits="System.Web.Mvc.ViewPage<MvcLearner.Models.Person>" %>

<asp:Content ID="Content1" ContentPlaceHolderID="TitleContent" runat="server">
    Create
</asp:Content>

<asp:Content ID="Content2" ContentPlaceHolderID="MainContent" runat="server">

    <h2>Create</h2>

    <% using (Html.BeginForm()) { %>
        <%= Html.LabelFor(person => person.Name) %><br />
        <%= Html.EditorFor(person => person.Name) %><br />
        <%= Html.LabelFor(person => person.Age) %><br />
        <%= Html.EditorFor(person => person.Age) %><br />
        <% foreach (String FavoriteFoods in Model.FavoriteFoods) { %>
            <%= Html.LabelFor(food => FavoriteFoods) %><br />
            <%= Html.EditorFor(food => FavoriteFoods)%><br />
        <% } %>
        <%= Html.EditorFor(person => person.Birthday, "TwoPart") %>
        <input type="submit" value="Submit" />
    <% } %>

</asp:Content>

শিশু শ্রেণির জন্য এখানে দৃ strongly়ভাবে টাইপ করা ভিউ (যা অবশ্যই এডিটরটেমপ্ল্যাটস নামে পরিচিত ভিউ ডিরেক্টরিটির সাবফোল্ডারে সংরক্ষণ করতে হবে):

<%@ Control Language="C#" Inherits="System.Web.Mvc.ViewUserControl<MvcLearner.Models.TwoPart>" %>

<%= Html.LabelFor(birthday => birthday.Day) %><br />
<%= Html.EditorFor(birthday => birthday.Day) %><br />

<%= Html.LabelFor(birthday => birthday.Month) %><br />
<%= Html.EditorFor(birthday => birthday.Month) %><br />

নিয়ন্ত্রকটি এখানে:

public class PersonController : Controller
{
    //
    // GET: /Person/
    [AcceptVerbs(HttpVerbs.Get)]
    public ActionResult Index()
    {
        return View();
    }

    [AcceptVerbs(HttpVerbs.Get)]
    public ActionResult Create()
    {
        Person person = new Person();
        person.FavoriteFoods.Add("Sushi");
        return View(person);
    }

    [AcceptVerbs(HttpVerbs.Post)]
    public ActionResult Create(Person person)
    {
        return View(person);
    }
}

এখানে কাস্টম ক্লাস রয়েছে:

public class Person
{
    public String Name { get; set; }
    public Int32 Age { get; set; }
    public List<String> FavoriteFoods { get; set; }
    public TwoPart Birthday { get; set; }

    public Person()
    {
        this.FavoriteFoods = new List<String>();
        this.Birthday = new TwoPart();
    }
}

public class TwoPart
{
    public Int32 Day { get; set; }
    public Int32 Month { get; set; }
}

এবং আউটপুট উত্স:

<form action="/Person/Create" method="post"><label for="Name">Name</label><br /> 
    <input class="text-box single-line" id="Name" name="Name" type="text" value="" /><br /> 
    <label for="Age">Age</label><br /> 
    <input class="text-box single-line" id="Age" name="Age" type="text" value="0" /><br /> 
    <label for="FavoriteFoods">FavoriteFoods</label><br /> 
    <input class="text-box single-line" id="FavoriteFoods" name="FavoriteFoods" type="text" value="Sushi" /><br /> 
    <label for="Birthday_Day">Day</label><br /> 
    <input class="text-box single-line" id="Birthday_Day" name="Birthday.Day" type="text" value="0" /><br /> 

    <label for="Birthday_Month">Month</label><br /> 
    <input class="text-box single-line" id="Birthday_Month" name="Birthday.Month" type="text" value="0" /><br /> 
    <input type="submit" value="Submit" /> 
</form>

এখন এটি সম্পূর্ণ। যাচাই করতে পোস্ট কন্ট্রোলার তৈরি করুন ক্রিয়ায় একটি ব্রেকপয়েন্ট সেট করুন। তালিকা সহ এটি ব্যবহার করবেন না কারণ এটি কাজ করবে না। সে সম্পর্কে আরও জানার জন্য সম্পাদকীয় টেম্পলেটগুলি সম্পর্কে আমার প্রশ্নটি দেখুন n


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

আমি এই দিনটিও পেরিয়ে এসেছি, ম্যাথডিঞ্জার.com / আর্টিভ / ২০০৯ / ০৮ /১ //২০১৮ , আপনি কীভাবে এটি সম্পাদকদের জন্য প্রসারিত করতে পারেন তা নির্ধারণ করতে পারেন কিনা তা দেখতে চাইলে (যদিও এখনও এমভিসি 2 রয়েছে)। আমি এটিতে কয়েক মিনিট ব্যয় করেছি, তবে সমস্যার মধ্যে পড়েছি কারণ আমি এখনও প্রকাশের সাথে পার্থক্য করি না par আমার চেয়ে ভাল আপনি করতে পারেন।
নিক লারসেন

1
একটি দরকারী লিঙ্ক, ধন্যবাদ। আমি এখানে संपादকের জন্য কাজ করা সম্ভব বলে মনে করি না, কারণ এটি অনুমান করে [0] সূচকগুলি তৈরি করে না (আমি বাজি ধরেছি এটি এখনও একে একে সমর্থন করে না)। একটি সমাধান হ'ল এডিটরফোর্ড () আউটপুটটিকে স্ট্রিংয়ের মধ্যে রেন্ডার করা এবং আউটপুটটিকে ম্যানুয়ালি সামঞ্জস্য করা (প্রয়োজনীয় উপসর্গ সংযোজন করা)। একটি নোংরা হ্যাক, যদিও। হুঁ! আমি এইচটিএমএল.হেল্পার () এর জন্য এক্সটেনশন পদ্ধতিটি করতে পারি Use ইউজপ্রেফিক্স () যা এমভিসি ভি 1 তে কেবলমাত্র = "x" নামটি "= উপসর্গ.এক্স" ... এর সাথে প্রতিস্থাপন করবে। এখনও কিছুটা কাজ কিন্তু তেমন কিছু নয়। এবং এইচটিএমএল.বিথপ্রিফিক্স ("উপসর্গ")। রেন্ডার পার্টিশিয়াল () যা জুটিতে কাজ করে।
রানী 3

Html.EditorForসন্তানের ফর্মটি রেন্ডার করার পদ্ধতির প্রস্তাব দেওয়ার জন্য +1 । এটি হ'ল সম্পাদক টেম্পলেটগুলির জন্য ব্যবহার করার কথা। এই উত্তর হওয়া উচিত।
গ্রেগ বার্গার্ড্ট

9

এটি একটি পুরানো প্রশ্ন, তবে যে কেউ সমাধানের সন্ধানের জন্য এখানে আসছেন, https://stackoverflow.com/a/29809907/456456EditorFor এ দেওয়া একটি মন্তব্যে প্রস্তাবিত হিসাবে, ব্যবহার বিবেচনা করুন । আংশিক দৃষ্টিকোণ থেকে সম্পাদক টেমপ্লেটে সরাতে, এই পদক্ষেপগুলি অনুসরণ করুন।

  1. আপনার আংশিক দৃষ্টিভঙ্গি কমপ্লেক্সটাইপের সাথে আবদ্ধ কিনা তা যাচাই করুন ।

  2. আপনার আংশিক দৃষ্টিভঙ্গি বর্তমান ভিউ ফোল্ডারের একটি সাবফোল্ডার সম্পাদক টিম্পলেটগুলিতে বা ভাগ করা ফোল্ডারে যান । এখন এটি একটি সম্পাদক টেম্পলেট।

  3. পরিবর্তন @Html.Partial("_PartialViewName", Model.ComplexType)করুন @Html.EditorFor(m => m.ComplexType, "_EditorTemplateName")। সম্পাদক টেম্পলেটটি alচ্ছিক যদি এটি জটিল ধরণের একমাত্র টেম্পলেট।

এইচটিএমএল ইনপুট উপাদানগুলির নাম স্বয়ংক্রিয়ভাবে দেওয়া হবে ComplexType.Fieldname


8

কারওর প্রয়োজনে এসপ নেট কোর 2 এর জন্য পার্টেলফোর্ড।

    public static ModelExplorer GetModelExplorer<TModel, TResult>(this IHtmlHelper<TModel> htmlHelper, Expression<Func<TModel, TResult>> expression)
    {
        if (expression == null)
            throw new ArgumentNullException(nameof(expression));
        return ExpressionMetadataProvider.FromLambdaExpression(expression, htmlHelper.ViewData, htmlHelper.MetadataProvider);
    }

    public static IHtmlContent PartialFor<TModel, TResult>(this IHtmlHelper<TModel> helper, Expression<Func<TModel, TResult>> expression, string partialViewName, string prefix = "")
    {
        var modelExplorer = helper.GetModelExplorer(expression);
        var viewData = new ViewDataDictionary(helper.ViewData);
        viewData.TemplateInfo.HtmlFieldPrefix += prefix;
        return helper.Partial(partialViewName, modelExplorer.Model, viewData);
    }

3

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

আশা করি এটি কিছুটা সাহায্য করবে।


1

আপনি রেন্ডার পার্টিশিয়ালের জন্য কোনও সহায়ক যুক্ত করতে পারেন যা উপসর্গ গ্রহণ করে এবং ভিউডাটাতে পপ করে।

    public static void RenderPartial(this HtmlHelper helper,string partialViewName, object model, string prefix)
    {
        helper.ViewData["__prefix"] = prefix;
        helper.RenderPartial(partialViewName, model);
    }

তারপরে আরও সহায়িকা যা ভিউডাটা মানকে সম্মতি দেয়

    public static void GetName(this HtmlHelper helper, string name)
    {
        return string.Concat(helper.ViewData["__prefix"], name);
    }

এবং তাই দেখুন ...

<% Html.RenderPartial("AnotherViewModelControl", Model.Child, "Child.") %>

আংশিক ...

<%= Html.TextBox(Html.GetName("Name"), Model.Name) %>

হ্যাঁ, আমি স্ট্যাকওভারফ্লো . com/ প্রশ্নগুলি / ১৪৮৮৮৯০/২ এর মন্তব্যে এটাই বর্ণনা করেছি । এর চেয়ে আরও ভাল সমাধান হ'ল রেন্ডার পার্টিশিয়াল যা ল্যাম্বডা লাগে, যা কার্যকর করা সহজ। তবুও, কোডটির জন্য ধন্যবাদ, আমি অনুমান করি এটিই সবচেয়ে বেদনাদায়ক এবং কালজয়ী পদ্ধতির।
কুইন 3

1
হেল্পার ব্যবহার করবেন না কেন? ভিউডেটা.টিম্পলেটআইএনফো, এইচটিএমএলফিল্ডপ্রিফিক্স = উপসর্গ? আমি এটি আমার সহায়তায় ব্যবহার করছি এবং মনে হচ্ছে এটি ঠিকঠাক কাজ করছে।
আজবুইন

0

আপনার মত আমিও আমার ভিউমোডেলগুলিতে প্রিফিক্স সম্পত্তি (একটি স্ট্রিং) যুক্ত করি যা আমি আমার মডেলটিকে আবদ্ধ ইনপুট নামের আগে সংযুক্ত করি। (YAGNI নীচে প্রতিরোধ করে)

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

আশা করি এইটি কাজ করবে,

দেনিযেল


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

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

0

রেন্ডার পার্টিশিয়াল বলার ঠিক আগে আপনি কী করেন

<% ViewData["Prefix"] = "Child."; %>
<% Html.RenderPartial("AnotherViewModelControl", Model.Child) %>

তারপরে আপনার আংশিক অংশে

<%= Html.TextBox(ViewData["Prefix"] + "Name", Model.Name) %>

1
এটি ম্যানুয়ালি পাস করার মতোই (আইভিউউমডেল থেকে "আইভিউমোডেল সেটপ্রিফিক্স (স্ট্রিং)" এর পরিবর্তে) সমস্ত ভিউ মডেলগুলি সংগ্রহ করা নিরাপদ, এবং খুব কুৎসিত, যদি না আমি সমস্ত এইচটিএমএল সহায়ক এবং রেন্ডার পার্টিয়াল পুনরায় লিখি যাতে তারা স্বয়ংক্রিয়ভাবে পরিচালনা করে এই. সমস্যাটি কীভাবে করবেন তা নয়, আমি এটি ইতিমধ্যে সমাধান করেছি; সমস্যাটি হ'ল এটি কী স্বয়ংক্রিয়ভাবে করা যায়।
রানী 3

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