এমভিসি 3 ড্রপডাউনলিস্টফোর্ড - একটি সাধারণ উদাহরণ?


112

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

public class MyViewModelClass
{
    public class Contrib
    {
        public int ContribId { get; set; }
        public string Value { get; set; }
    }

    public IEnumerable<Contrib> ContribTypeOptions = 
        new List<Contrib>
        {
            new Contrib {ContribId = 0, Value = "Payroll Deduction"},
            new Contrib {ContribId = 1, Value = "Bill Me"}
        };

    [DisplayName("Contribution Type")]
    public string ContribType { get; set; }
}

আমার দৃশ্যে আমি এই পৃষ্ঠাটিতে ড্রপডাউনটি রাখি:

<div class="editor-label">
    @Html.LabelFor(m => m.ContribType)
</div>
<div class="editor-field">
    @Html.DropDownListFor(m => m.ContribTypeOptions.First().ContribId, 
             new SelectList(Model.ContribTypeOptions, "ContribId", "Value"))
</div>

আমি ফর্মটি জমা ContribTypeদিলে অবশ্যই (অবশ্যই) নাল হয়।

এটি করার সঠিক উপায় কী?

উত্তর:


166

আপনার এটি করা উচিত:

@Html.DropDownListFor(m => m.ContribType, 
                new SelectList(Model.ContribTypeOptions, 
                               "ContribId", "Value"))

কোথায়:

m => m.ContribType

ফলাফল হ'ল এমন একটি সম্পত্তি।


2
ধন্যবাদ!!! সার্জি, আমি ঠিক অনেক ঘন্টা ধরে এইটাই খুঁজছিলাম।
ট্রে ক্যারল

ধন্যবাদ :) আপনার উত্তরের জন্য এখান থেকে "- নির্বাচন করুন" "দেখানোর কোনও উপায় আছে কি? ?
kbvishnu

1
@ ভিকিবি, contribTypeOptionsউদাহরণস্বরূপ আপনি তালিকায় নতুন আইটেম যুক্ত করতে পারেন new Contrib {ContribId = -1, Value = "Please Select"}এবং এটি ড্রপডাউন তালিকায় প্রদর্শিত হবে। আপনি না পরীক্ষা করতে যদি চেয়ে ContribTypeহয় -1এর মানে হল যে ব্যবহারকারী কোনো মান নির্বাচন করেন নি হয়
সের্গেই Gavruk

9
আপনি এটি করতে পারেন:@Html.DropDownListFor(m => m.ContribType, new SelectList(Model.ContribTypeOptions, "ContribId", "Value", Model.ContribTypeOptions.First().ContribId), "Select, please")
সের্গেই গাভরুক

1
@SergeyGavruk। এই উত্তরটি সাম্প্রতিক কয়েকটি প্রশ্নের জন্য ডুপ হিসাবে ব্যবহৃত হয়েছে তবে বিবৃতিটির কারণে কিছু ব্যবহারকারীকে বিভ্রান্ত করছে এবং নির্বাচনী তালিকা নির্মাণকারীর শেষ প্যারামটি একটি নির্বাচিত মান - শেষ প্যারামিটারটি পদ্ধতিটি উপেক্ষা করা হয় (যা অভ্যন্তরীণভাবে এটি নিজস্ব তৈরি করে SelectList) । এটির সম্পত্তিটির মূল্য ( ContribType) যা নির্বাচিত তা নির্ধারণ করে (মডেল বাঁধাই কীভাবে কাজ করে) এবং কোডটি ঠিক হওয়া উচিত @Html.DropDownListFor(m => m.ContribType, new SelectList(Model.ContribTypeOptions, "ContribId", "Value")আপনি দয়া করে উত্তরটি সম্পাদনা করতে পারেন।

7

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

public ActionResult Edit(int id)
{
    ItemsStore item = itemStoreRepository.FindById(id);
    ViewBag.CategoryId = new SelectList(categoryRepository.Query().Get(), 
                                        "Id", "Name",item.CategoryId);

    // ViewBag to pass values to View and SelectList
    //(get list of items,valuefield,textfield,selectedValue)

    return View(item);
}

এবং দেখুন

@Html.DropDownList("CategoryId",String.Empty)

5
এটি আপনার ভিউপিটির মতো ভিউতে প্রকাশ করা সাধারণত কোনও godশ্বরের প্যাটার্ন নয়।
আন্দ্রে পেনা

6

একটি ড্রপডাউনলিস্টে ডায়নামিক ডেটা বাঁধার জন্য আপনি নিম্নলিখিতটি করতে পারেন:

নীচের মতো কন্ট্রোলারে ভিউব্যাগ তৈরি করুন

ViewBag.ContribTypeOptions = yourFunctionValue();

এই মানটি এখন নীচের মত দৃষ্টিতে ব্যবহার করুন:

@Html.DropDownListFor(m => m.ContribType, 
    new SelectList(@ViewBag.ContribTypeOptions, "ContribId", 
                   "Value", Model.ContribTypeOptions.First().ContribId), 
    "Select, please")

0
     @Html.DropDownListFor(m => m.SelectedValue,Your List,"ID","Values")

এখানে মান হ'ল মডেলের সেই অবজেক্টটি যেখানে আপনি নিজের নির্বাচিত মানটি সংরক্ষণ করতে চান

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