2014-10-14 2 views
-2

Уверен, что у тонн людей были подобные проблемы, но я прочитал каждый поток, который мог найти, и он все равно не сработает. Любая помощь будет с радостью оценена.Как получить раскрывающийся список, работающий на C# ASP.NET razor mvc

Идея ниже страницы:

Так раскрывающиеся автоматически заполняет из значений из базы данных (что он делает), а затем, когда пользователь выбирает конкретное значение страницы реагирующую например с MessageBox и т.д.

Модель:

public class Countries 
{ 
    public int CountriesId { get; set; } 
    public string Name { get; set; } 
} 

public class ViewModel 
{ 

    // This property will be populated with the selected Countries's ID when user posts the form 
    public int SelectedCountriesId { get; set; } 

    // After form submission, this property will hold the selected Countries's name 
    public string CountriesName { get; set; } 

    // Option Label for DropDownList 
    public string OptionLabel { get; set; } 

    public class ItemListModelViewModel 
    { 

     // All the Countriess which will be in the list 
     public IEnumerable<Countries> CountriesList { get; set; } 
    } 

    /// <summary> 
    /// SelectListViewModel: name indicates that select list items are collected as list of SelectListItem type 
    /// </summary> 
    public class SelectListViewModel 
    { 

     // This will hold a constructed selectlist with Countries items 
     public SelectList CountriesList { get; set; } 
    } 

    public class SelectListItemViewModel 
    { 

     // All the Countriess which will be in the list 
     public IEnumerable<SelectListItem> CountriesList { get; set; } 

    } 

Контроллер:

[HttpPost] 
public ActionResult Index(CurrentInventoryModel m) 
{ 


    var Countries = Help.GetCountries(); 



    m.CountriesList = Countries; 



    m.CountriesName = Countries.Where(c => c.CountriesID == m.SelectedCountriesID).FirstOrDefault().Name; 

    return View(m); 
} 

Html:

@using (Html.BeginForm()) 
{ 
    @Html.ValidationSummary(true) 
     <div class="display-field" align="left"> 
      <select name="mydropdown"> 
       @foreach (var lLMMI in lIM) 
       { 
        <option value="@lLMMI.Key.Product.PCode">@locItem.Key.Loc.N (@lLMMI.Key.Loc.Code)</option>} 
      </select> 
      <br /><br /> 
     </div> 
    <input type='submit' value='Submit' /> 
} 

Я хочу, чтобы зафиксировать коробку падения, так как я не могу получить он должен передать выбранное значение выпадающего значения, например, в окно сообщения. Как это можно достичь?

+1

Что ваш вопрос? – Paddy

+0

Вопрос -Пожалуйста, исправьте окно сбрасывания, так как я не могу заставить его передать выбранное значение выпадающего значения в окно сообщения, например, –

+1

Что вы понимаете под «передать выбранное значение выпадающего значения в поле сообщения», ? –

ответ

0

Вы должны добавить onChange события вашего выбору:

<select name="mydropdown" id="mydropdown" onchange="onChange()"> 

Добавить яваскрипт функции, чтобы справиться с этим, где вы получите выбранное значение и передать его в качестве параметра к вашим действиям:

function onChange() { 
    var item = document.getElementById("mydropdown").value; 
    $.post('@Url.Content("ActionName")', 
     { "item": item }); 
} 

Если вы хотите отобразить системное сообщение с выбранным значением:

function onChange() { 
    var item = document.getElementById("mydropdown").value; 
    alert(item); 
} 
3

Модель:

[Required(ErrorMessage = "You must select a country")] 
[Display(Name = "Country")] 
public int SelectedCountriesId { get; set; } 
public string CountryName { get; set; } 
public SelectList CountriesList { get; set; } 

Контроллер:

var listOfCountries = Help.GetCountries(); 
m.CountriesList = new SelectList(listOfCountries, "id", "coutry_name"); 

Вид:

<div class="editor-field"> 
    @Html.DropDownListFor(model => model.SelectedCountriesId, 
         (IEnumerable<SelectListItem>)model.CountriesList, 
         "-- Select a country --") 
    @Html.ValidationMessageFor(model => model.SelectedCountriesId) 
</div> 
Смежные вопросы