Asp .Net MVC, как поместить / включить значения в DropDownListFor? - PullRequest
0 голосов
/ 04 июня 2018

Я следую этому уроку , который работает очень хорошо.Но проблема в том, что он обеспечивает только key и без него value (как показано на рисунке ниже).Как включить значения для каждого из этих ключей?

Проверенные элементы (Изображение)

enter image description here

Модель

[Required( ErrorMessage = "Selection is a MUST" )]
public string SelectedItem { get; set; }

private List<string> _items;
public List<string> Items 
{
    get
    {
        _items = new List<string>();
        _items.Add("One");
        _items.Add("Two");
        _items.Add("Three");
        return _items;
    }
}

Контроллер

public class HomeController : Controller
{
    //Render Action
    [HttpGet]
    public ViewResult Index()
    {
        DropdownListModel model = new DropdownListModel();
        return View(model);
    }

    //Process Action
    [HttpPost]
    public ViewResult Index(DropdownListModel model)
    {
        //TODO: Validate using if(ModelState.IsValid) and process information
        return View(model);
    }
}

Вид

<div>
    <!--Render the DropDownListmodel -->
    @using (Html.BeginForm())
    {           
        <p>@Html.ValidationSummary()</p>
        <p>Select an Item : @Html.DropDownListFor(x => x.SelectedItem, new SelectList(Model.Items), "--Choose any Item--" )</p>   
        <input type="submit" value="Submit" />         
    }

    <!-- Display Selected Item -->
     @if (!String.IsNullOrWhiteSpace(Model.SelectedItem))
     {
          <span>Selected Item : @Model.SelectedItem</span>
     }

</div>

ЧтоЯ попытался

Я заменил коды в моделях на код ниже.Но у меня ошибка: Models.KeyValueModel: : EntityType 'KeyValueModel' has no key defined. Define the key for this EntityType. KeyValueModels: EntityType: EntitySet 'KeyValueModels' is based on type 'KeyValueModel' that has no keys defined.

public List<KeyValueModel> Items
{
    get
    {
        List<KeyValueModel> item = new List<KeyValueModel>();
        var n = new KeyValueModel();
        n.Key = "1";
        n.Value = "One";
        item.Add(n);

        n = new KeyValueModel();
        n.Key = "2";
        n.Value = "Second";
        item.Add(n);

        n = new KeyValueModel();
        n.Key = "3";
        n.Value = "Three";
        item.Add(n);
        return item;
    }
}

Ответы [ 2 ]

0 голосов
/ 04 июня 2018

добавить модель как:

     public string nameofdropdown{ get; set; }
     public IEnumerable<SelectListItem> listyouwanttodisplay{ get; set; }

В методе получения:

       Model model=new Model;
       List<SelectListItem> cd = Get() //call here----

        var additionaldata= new SelectListItem()
        {
            Value = null,
            Text = "--- place holder---"
        };
        cd.Insert(0, additionaldata);
        model.listyouwanttodisplay=cd;            
        return View (model);

В представлении:

     <div>
       @Html.DropDownListFor(model => model.nameofdropdown, new 
       SelectList(Model.listyouwanttodisplay, "Value","Text"),htmlAttributes: new { @class = "form-control" })
    </div>
0 голосов
/ 04 июня 2018

Вы должны указать в своем запросе HttpGet свою пару Key Value, как эта:

DropdownListModel model = new DropdownListModel();
model.ItemList = new List<SelectListItem>()
        {
            new SelectListItem { Text = "One", Value = "1" },
            new SelectListItem { Text = "Two", Value = "2" }
        };

Затем в вашей модели добавьте:

public IEnumerable<SelectListItem> ItemList { get; set; }
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...