আমি কীভাবে এই এএসপি.নেট এমভিসি নির্বাচন তালিকা পেতে পারি?


126

আমি ভিউতে প্রদর্শিত করতে আমার কন্ট্রোলারে একটি নির্বাচন তালিকা তৈরি করি।

আমি এটিকে ফ্লাইতে, সাজানোর জিনিসটিতে তৈরি করার চেষ্টা করছি ... এরকম ...

myViewData.PageOptionsDropDown = 
   new SelectList(new [] {"10", "15", "25", "50", "100", "1000"}, "15");

এটি সংকলন করে তবে আউটপুটটি খারাপ ...

<select id="PageOptionsDropDown" name="PageOptionsDropDown">
    <option>10</option>
    <option>15</option>
    <option>25</option>
    <option>50</option>
    <option>100</option>
    <option>1000</option>
</select>

লক্ষ্য করুন কীভাবে কোনও আইটেম নির্বাচন করা হয়নি?

আমি এটা কিভাবে ঠিক করবো??


1
ছয়টি উত্তর ... একটি পছন্দসই ... কোনও অগ্রগতি নেই: / আমি এটিকে একটি +1
womp

উত্তর:


128

এইভাবেই আমি এটি করি

IList<Customer> customers = repository.GetAll<Customer>();
IEnumerable<SelectListItem> selectList = 
    from c in customers
    select new SelectListItem
    {
        Selected = (c.CustomerID == invoice.CustomerID),
        Text = c.Name,
        Value = c.CustomerID.ToString()
    };

দ্বিতীয় নজরে আমি নিশ্চিত না যে আমি জানি আপনি কী পরে আছেন ...


2
আপনাকে ধন্যবাদ আপনাকে এই জিনিসটি বের করতে সহায়তা করেছে।
কাদু

6
নির্বাচিত আইটেম ইস্যুটি ঠিক করে না তবে এটি নির্বাচিত তালিকার জন্য যাদু স্ট্রিং এড়ানোর দুর্দান্ত উপায়! চিয়ার্স
অ্যালান ক্রিস্টেনসেন

11
নির্বাচিত আইটেম ইস্যুটি ঠিক করতে, নিম্নলিখিত কোডটি যুক্ত করুন: বর্তমান নির্বাচিত SelectList sList = new SelectList(selectList, "Text", "Value", selected);selected
গ্রাহকটি

68

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

ব্যবহার

var departmentItems = departments.ToSelectList(d => d.Code + 
                                               " - " + d.Description,
                                               d => d.Id.ToString(),
                                               " - ");

var functionItems = customerFunctions.ToSelectList(f => f.Description, 
                                                   f => f.Id.ToString(), 
                                                   " - ");

সঙ্গে

public static class MCVExtentions
{
    public static List<SelectListItem> ToSelectList<T>(
        this IEnumerable<T> enumerable, 
        Func<T, string> text, 
        Func<T, string> value, 
        string defaultOption)
    {
        var items = enumerable.Select(f => new SelectListItem()
                                     {
                                         Text = text(f), 
                                         Value = value(f) 
                                     }).ToList();
        items.Insert(0, new SelectListItem()
                    {
                        Text = defaultOption, 
                        Value = "-1" 
                    });
        return items;
    }
}

সুন্দর। আমি একটি নির্বাচিত ফানক, একটি ডিফল্টভ্যালু বিকল্প এবং কোনও ডিফল্ট ছাড়াই একটি দ্বিতীয় ওভারলোড যুক্ত করেছি এবং এটি একটি ট্রিট কাজ করে। যাইহোক আপনি যদি রিটার্ন টাইপটি IEnumerable <সিলেক্টলিস্ট আইটেম> করতে চান তবে আপনি এই চেহারাটি সত্যিই পরিষ্কার করার জন্য ফলন ফেরতের বাক্য গঠন ব্যবহার করতে পারেন
ক্রিস মেক

48

কনস্ট্রাক্টর ব্যবহার করে যা items, dataValueField, dataTextField, selectedValueপরামিতি হিসাবে গ্রহণ করে :

ViewData["myList"] = 
                new SelectList(new[] { "10", "15", "25", "50", "100", "1000" }
                .Select(x => new {value = x, text = x}), 
                "value", "text", "15");

তারপরে আপনার দৃষ্টিতে:

<%=Html.DropDownList("myList") %>

3
ভাল ছেলে :) আমি পছন্দ করি! আমি এটি করার চেষ্টা করছিলাম .. তবে আমি। (নির্বাচন) .. অংশটি পেতে পারি না .. সুন্দর :) আমি এটি বাড়িতে পরে চেষ্টা করে
দেখব

1
হিয়া ক্যাগদাস। দুর্দান্ত কাজ করে, বাদে নির্বাচিত ক্ষেত্রটি নির্বাচিত হয় না। কোন ধারণা? এটি কি এমভিসি স্টাফগুলিতে একটি বাগ?
খাঁটি.ক্রোম

2
নির্বাচিত আইটেমটি কাজ করে যখন আপনি ভিউডাটা অবজেক্টে সিলেক্টলিস্ট আইটেম যুক্ত করেন (ভিউডাটা ["মাইলিস্ট"] হিসাবে = নতুন সিলেক্টলিস্ট ..) এবং তারপরে <% = এইচটিএমএল.ড্রপডাউনলিস্ট ("মাইলিস্ট")%> রেন্ডার করুন। আমি নির্বাচিত আইটেমটি এভাবে না করে কাজ করতে পারি না। রহস্যময়।
ğağdaş টেকিন

@ ক্যাগডাস - হাই আবার ডুড .. আমি এখনও এটি বের করতে পারি নি :( ভিউডাটা সম্পর্কে এটি কি ??? ??? আমার নিজের সম্পত্তি নিয়ে দৃ strongly়ভাবে টাইপ করা ভিউডাটা আছে .... ???
খাঁটি.ক্রোম

@ খাঁটি.ক্রোম - প্রশ্নটিতে আপনার উদাহরণ থেকে আমি সেই সম্পত্তিটি নিয়েছি। এখন আমি কোড নমুনা সম্পাদনা করছি। আমার সম্পাদনাটি কয়েক সেকেন্ডে দেখুন।
ğağdaş টেকিন

19

টমাস স্টকের জবাব বন্ধ করে, আমি এই ওভারলোডেড ToSelectListপদ্ধতিগুলি তৈরি করেছি :

using System;
using System.Collections.Generic;
using System.Linq;
using System.Web.Mvc;

public static partial class Helpers
{
    public static IEnumerable<SelectListItem> ToSelectList<T>(this IEnumerable<T> enumerable, Func<T, object> value, bool selectAll = false)
    {
        return enumerable.ToSelectList(value, value, selectAll);
    }

    public static IEnumerable<SelectListItem> ToSelectList<T>(this IEnumerable<T> enumerable, Func<T, object> value, object selectedValue)
    {
        return enumerable.ToSelectList(value, value, new List<object>() { selectedValue });
    }

    public static IEnumerable<SelectListItem> ToSelectList<T>(this IEnumerable<T> enumerable, Func<T, object> value, IEnumerable<object> selectedValues)
    {
        return enumerable.ToSelectList(value, value, selectedValues);
    }

    public static IEnumerable<SelectListItem> ToSelectList<T>(this IEnumerable<T> enumerable, Func<T, object> value, Func<T, object> text, bool selectAll = false)
    {
        foreach (var f in enumerable.Where(x => x != null))
        {
            yield return new SelectListItem()
            {
                Value = value(f).ToString(),
                Text = text(f).ToString(),
                Selected = selectAll
            };
        }
    }

    public static IEnumerable<SelectListItem> ToSelectList<T>(this IEnumerable<T> enumerable, Func<T, object> value, Func<T, object> text, object selectedValue)
    {
        return enumerable.ToSelectList(value, text, new List<object>() { selectedValue });
    }

    public static IEnumerable<SelectListItem> ToSelectList<T>(this IEnumerable<T> enumerable, Func<T, object> value, Func<T, object> text, IEnumerable<object> selectedValues)
    {
        var sel = selectedValues != null
            ? selectedValues.Where(x => x != null).ToList().ConvertAll<string>(x => x.ToString())
            : new List<string>();

        foreach (var f in enumerable.Where(x => x != null))
        {
            yield return new SelectListItem()
            {
                Value = value(f).ToString(),
                Text = text(f).ToString(),
                Selected = sel.Contains(value(f).ToString())
            };
        }
    }
}

আপনার নিয়ামকের মধ্যে, আপনি নিম্নলিখিতগুলি করতে পারেন:

var pageOptions = new[] { "10", "15", "25", "50", "100", "1000" };
ViewBag.PageOptions = pageOptions.ToSelectList(o => o, "15" /*selectedValue*/);

এবং অবশেষে আপনার ভিউতে, রাখুন:

@Html.DropDownList("PageOptionsDropDown", ViewBag.PageOptions as IEnumerable<SelectListItem>, "(Select one)")

এর ফলে কাঙ্ক্ষিত আউটপুট আসবে - অবশ্যই আপনি "(Select one)"প্রথম খালি আইটেমটি না চাইলে উপরের বিকল্পটি লেবেলটি ছেড়ে দিতে পারেন:

<select id="PageOptionsDropDown" name="PageOptionsDropDown">
<option value="">(Select one)</option>
<option value="10">10</option>
<option selected="selected" value="15">15</option>
<option value="25">25</option>
<option value="50">50</option>
<option value="100">100</option>
<option value="1000">1000</option>
</select>

আপডেট: এক্সএমএল মন্তব্য সহ একটি সংশোধিত কোড তালিকা পাওয়া যাবে


13

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

আপনাকে সিলেক্টলিস্ট কর্টোর সাথে সিলেক্টলিস্ট আইটেম [], টেক্সট-নাম, মান-নাম এবং নির্বাচিতভ্যালু ব্যবহার করতে হবে। সিলেক্টলিস্ট আইটেমের ভ্যালু সিলেক্টভ্যালু হিসাবে পাস করতে সচেতন হন, যা আপনি বাছাই করতে চান, নিজেই সিলেক্টলিস্টটাইম নয়! উদাহরণ:

SelectList sl = new SelectList( new[]{
  new SelectListItem{ Text="one", Value="1"},
  new SelectListItem{ Text="two", Value="2"},
  new SelectListItem{ Text="three", Value="3"}
}, "Text", "Value", "2" );

(এটি পরীক্ষা করা হয়নি, তবে আমারও একই সমস্যা ছিল)

তারপরে দ্বিতীয় বিকল্পটি নির্বাচিত = "নির্বাচিত" বৈশিষ্ট্যটি পাবে। এটি দেখতে পুরানো ডেটাসেটের মতো দেখাচ্ছে ;-)


11

এটি একটি বিকল্প:

myViewData.PageOptionsDropDown = new[] 
{
 new SelectListItem { Text = "10", Value = "10" },
 new SelectListItem { Text = "15", Value = "15", Selected = true }
 new SelectListItem { Text = "25", Value = "25" },
 new SelectListItem { Text = "50", Value = "50" },
 new SelectListItem { Text = "100", Value = "100" },
 new SelectListItem { Text = "1000", Value = "1000" },
}

নতুন নির্বাচিত তালিকা tem নির্বাচিত মানটির জন্য নির্বাচিত = সত্য, পাঠ্য = "15", মান = "15"।।
কাদু

ওহো, হাঁ, 'নির্বাচিত' সম্পত্তি, ধন্যবাদ Cadoo =) অন্তর্ভুক্ত করা ভুলে গেছি
murki

10

আপনি যদি আক্ষরিকভাবে এটি করতে চান তবে কেবল স্ট্রিং হিসাবে নির্বাচিত আইটেমের সমস্যার সমাধান করে অ্যারেটিকে ঘোষণা করা:

myViewData.PageOptionsDropDown = 
   new SelectList(new string[] {"10", "15", "25", "50", "100", "1000"}, "15");

7

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

উদাহরণ:

আমাদের অঞ্চল অবজেক্টটি ধরে নেওয়া এইরকম কিছু:

public class Region {
     public Guid ID { get; set; }
     public Guid Name { get; set; }
}

এবং আপনার ভিউ মডেলটি হ'ল কিছু:

public class ContactViewModel {
     public DateTime Date { get; set; }
     public Region Region { get; set; }
     public List<Region> Regions { get; set; }
}

আপনার নীচের কোডটি থাকতে পারে:

@Html.DropDownListFor(x => x.Region, new SelectList(Model.Regions, "ID", "Name")) 

কেবলমাত্র আপনি যদি অঞ্চলের টোস্ট্রিং পদ্ধতিটিকে এই জাতীয় কিছুতে আপত্তি করেন তবে:

public class Region {
     public Guid ID { get; set; }
     public Guid Name { get; set; }

     public override string ToString()
     {
         return ID.ToString();
     }
}

এটিতে কাজ করার 100% গ্যারান্টি রয়েছে।

তবে আমি সত্যই বিশ্বাস করি যে সমস্ত সার্কটেন্সে 100% কাজ করে নির্বাচন করার সেরা উপায় হ'ল আইটেম সংগ্রহের প্রতিটি আইটেমের বিপরীতে ড্রপডাউনলিস্ট বা তালিকাবক্সের সম্পত্তি মান পরীক্ষা করার জন্য সমান পদ্ধতিটি ব্যবহার করা।


5

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

এটি অবশ্যই কিছুটা অদ্ভুত, তবে আমি এটি চেষ্টা করেছি এবং এটি কার্যকর।

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


1
হ্যাঁ, আমারও একই সমস্যা ছিল। কেবল নাম পরিবর্তন করে কাজ করা হয়েছে। ধন্যবাদ!
ডেভেকোর

4

আমার ঠিক একই সমস্যা ছিল. সমাধান সহজ। ড্রপডাউনলিস্ট সহায়ককে পাস করা "নাম" পরামিতিটি কেবল এমন কিছুতে পরিবর্তন করুন যা আপনার ভিউমোডেলে থাকা কোনও বৈশিষ্ট্যের সাথে মেলে না। এখানে আরও পড়ুন: http://www.dotnetguy.co.uk/post/2009/06/25/net-mvc-selectlists-selected-value-does-not-get-set-in-the-view

আমি ড্যান ওয়াটসনের উদ্ধৃতি দিয়েছি:

এমভিসিতে ভিউটি দৃ view়ভাবে টাইপ করা থাকলে বাছাই করা তালিকার নির্বাচিত বিকল্পটি ওভাররাইড হয়ে যাবে এবং কনস্ট্রাক্টরের সেট করা নির্বাচিত বিকল্পের সম্পত্তিটি কখনই ভিউতে পৌঁছতে পারে না এবং তার পরিবর্তে ড্রপডাউন-এ প্রথম বিকল্পটি নির্বাচন করা হবে (কেন এখনও কিছুটা রহস্যের বিষয় আছে) ।

চিয়ার্স!


3

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


3

সরল:

string[] someName = new string[] {"10", "15", "25", "50", "100", "1000"};
myViewData.PageOptionsDropDown = new SelectList(someName, "15");

2

আমি এটিকে এ জাতীয়ভাবে চালিয়েছি এবং কোনও সমস্যা ছিল না,

public class myViewDataObj
    {
        public SelectList PageOptionsDropDown { get; set; }
    }

public ActionResult About()
        {
            myViewDataObj myViewData = new myViewDataObj();
            myViewData.PageOptionsDropDown =
                  new SelectList(new[] { "10", "15", "25", "50", "100", "1000" }, "15");

            ViewData["myList"] = myViewData.PageOptionsDropDown;
            return View();
        }

এবং

<%=Html.DropDownList("myList") %>

এটি কাজ করে যদি আপনি এটি করেন,

public ActionResult About()
        {
            myViewDataObj myViewData = new myViewDataObj();
            myViewData.PageOptionsDropDown =
                  new SelectList(new[] { "10", "15", "25", "50", "100", "1000" });

            ViewData["myListValues"] = myViewData.PageOptionsDropDown;
            ViewData["myList"] = "15";
            return View();
        }

এবং

<%=Html.DropDownList("myList",(IEnumerable<SelectListItem>)ViewData["myListValues"]) %>

1

আপনার উদাহরণটি ব্যবহার করে এটি আমার পক্ষে কাজ করেছে:

নিয়ামক:

ViewData["PageOptionsDropDown"] = new SelectList(new[] { "10", "15", "25", "50", "100", "1000" }, "15");

দেখুন:

<%= Html.DropDownList("PageOptionsDropDown")%>

হ্যাঁ এটি আমার পক্ষেও কাজ করছে। আমার ক্ষেত্রে, তালিকাটি একটি সত্তা মডেল অবজেক্ট। কন্ট্রোলার: ভিউডাটা ["বিভাগগুলি"] = নতুন নির্বাচন তালিকা (ডিবি। বিভাগসমূহ T টোলিস্ট (), "বিভাগ আইড", "বিভাগের নাম", "15"); দেখুন: এইচটিএমএল.ড্রপডাউনলিস্ট ("বিভাগীয় আইডি", (নির্বাচন তালিকা) ভিউডাটা ["বিভাগগুলি"], "
জুনিয়র মেহে

1
MonthRepository monthRepository = new MonthRepository();
IQueryable<MonthEntity> entities = monthRepository.GetAllMonth();
List<MonthEntity> monthEntities = new List<MonthEntity>();

foreach(var r in entities)
{
    monthEntities.Add(r);
}

ViewData["Month"] = new SelectList(monthEntities, "MonthID", "Month", "Mars");

1

আমি এটি এইভাবে করি:

List<SelectListItem> list = new List<SelectListItem>{
new SelectListItem {Selected = true, Text = "Select", Value = "0"},
new SelectListItem {Selected = true, Text = "1", Value = "1"},
new SelectListItem {Selected = true, Text = "2", Value = "2"}
};
return list.ToArray();

ToArray () সমস্যাগুলির যত্ন নেয়।


1

আপনি যদি আপনার ড্রপডাউনলিস্টে কিছু এলোমেলো পাঠ্য পাস করতে চান, উদাহরণস্বরূপ - নির্বাচন করুন - আপনি এই কোডটি ব্যবহার করে সহজেই এটি করতে পারেন:

@Html.DropDownListFor(x => x.CategoryId, new SelectList(Model.Categories, "Id", "Name"), "--Select--", new { @class = "form-control" })


0

মডেলটিতে নির্বাচিত মানটি ডিফল্ট আইটেমের পরিবর্তে সুবিধা নেয়। (আমি সম্মত আমি সমস্ত পোস্ট পড়েনি)


0

আমি মনে করতে পারি না যে এমভিসি 1 কীভাবে সেটআপ হয়েছিল, তবে মনে হচ্ছে এটি নির্বাচিত তালিকাটিকে একই ক্ষেত্রের মতো করতে চেয়েছিল যার ক্ষেত্রটি খুব বেশি ...

আমি যা দেখেছি, যেমন উপরে একরকম বলা হয়েছিল, তা হল আমার নির্বাচিত তালিকাগুলি এমভিসি 2 তে কাজ করছিল না, যখন ভিউডাটা তাদের প্রেরণ করা হয়েছিল ফিল্ডের মতোই ছিল।

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

<%= Html.DropDownListFor((model => model.ForID), (SelectList)ViewData["ForName"]) %>

যখন কাজ করে

<%= Html.DropDownListFor((model => model.ForID), (SelectList)ViewData["ForID"]) %>

ভিউডাটা নামটি "ফরআইডি" এর জন্য কাজ করা ক্ষেত্রের মতো নাম হিসাবে কাজ করে না


0

একটি সম্ভাব্য ব্যাখ্যা হ'ল আপনি যে তালিকা নির্বাচন করতে বাধ্য হন তা কোনও স্ট্রিং নয়।

সুতরাং উদাহরণস্বরূপ, 'পেজঅপশনসড্রপডাউন' পরামিতিটি কি আপনার মডেলের একটি স্ট্রিং? কারণ এটি যদি না হয় তবে তালিকার নির্বাচিত মানটি প্রদর্শিত হবে না।


0

আপনি যদি এইচটিএমএল.ড্রপডাউনলিস্ট এক্সটেনশন পদ্ধতিতে এমভিসি 2 এর উত্স কোডটি দেখেন তবে এটি কখনই নির্বাচনী তালিকা শ্রেণি নির্বাচিতভ্যালু সম্পত্তিটি পরীক্ষা করে না। এটি কেবল কখনও আপনার মডেলের সাথে মেলে চেষ্টা করবে।

উপরের সমস্ত বিষয়গুলি একটি থিমের সমস্ত প্রকরণ, যেমন আপনি কীভাবে একটি ড্রপ-ডাউন তালিকার জন্য ভিউতে একগুচ্ছ ডেটা প্রেরণ করবেন এবং সেগুলি একে অপরের মতো আরও ভাল (কম-বেশি)।

সমস্যাটি দেখুন। হয় আপনার নিজের ড্রপডাউনলিস্ট এক্সটেনশন পদ্ধতিটি তৈরি করুন যা আপনি সেট করা নির্বাচনকে সম্মান করেন না বা হাত দিয়ে পুনরাবৃত্তি করুন। যা কখনই আপনার পক্ষে সেরা কাজ করে।


@ ফ্রেঞ্জ অ্যান্টেসবার্গার একই কথা বলেছেন।
সাইমন হ্যালসি

0

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

@Html.DropDownListFor(x => x.RegionID, 
    new SelectList(Model.Regions,"RegionID", "RegionName", Model.RegionID))

-অথবা-

@Html.DropDownList("RegionID", 
    new SelectList(Model.Regions, "RegionID", "RegionName", Model.RegionID))
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.