Как показать текущее значение (из модели) в выпадающем списке - PullRequest
0 голосов
/ 30 октября 2019

Моя cshtml страница содержит цикл for each, и я хотел бы связать значения в полях html.

Я уже пробовал следующее:

 @Html.DropDownList("Load_Type",(IEnumerable<SelectListItem>)ViewBag.LoadType, "Select", new {@class = "form-control", value = "obj.Load_type"})

, но привязка значений в раскрывающемся спискес выбранным текущим значением не работает:

    @model List<model>   
foreach (var obj in Model)
        {
@Html.DropDownList("Load_Type",(IEnumerable<SelectListItem>)ViewBag.LoadType,"Select", new {@class ="form-control",})
        }

Ответы [ 3 ]

0 голосов
/ 30 октября 2019

Вы должны использовать value = @obj.Load_type вместо value = "obj.Load_type"

0 голосов
/ 30 октября 2019

SelectListItem имеет свойство с именем ' Selected ', просто установите его в True для значения, которое вы хотите сделать выделенным.

Контроллер

public class Default16Controller : Controller
{
    // GET: Default16
    public ActionResult Index()
    {
        List<SelectListItem> li = new List<SelectListItem>()
        {
            new SelectListItem()
            {
                Text = "Select",
                Value = ""

            },
            new SelectListItem()
            {
                Text = "One",
                Value = "1",
                Selected = true // Setting Item as Selected
            },
            new SelectListItem()
            {
                Text = "Two",
                Value = "2"
            }
        };

        ViewBag.LoadType = li;
        return View();
    }
}

Просмотр

@{
Layout = null;
}
<!DOCTYPE html>
<html>
<head>
    <meta name="viewport" content="width=device-width" />
    <title>Index</title>
</head>
<body>
    <div>
        @Html.DropDownList("Load_Type", (IEnumerable<SelectListItem>)ViewBag.LoadType, "Select", new { @class = "form-control", value = "obj.Load_type" })
    </div>
</body>
</html>

Результат

enter image description here

0 голосов
/ 30 октября 2019

Что вы можете сделать, это установить значение с помощью jquery onpageready.

Сначала добавьте класс selectLoop и data_selected = obj.SelectedValue в помощнике html. SelectedValue ссылается на свойство, которое мы должны сопоставить.

@Html.DropDownList("Load_Type",(IEnumerable<SelectListItem>)ViewBag.LoadType,"Select", new {@class ="form-control selectLoop", data_selected = obj.SelectedValue })

Затем в вашем скрипте переберите .selectLoop и назначьте выбранное значение для каждого из списка выбора.

$(document).ready(function(){

   // loop through all those with selectLoop class
   $(".selectLoop").each(function(){

      // get the selected value and store to variable
      var selected = $(this).attr("data-selected");

      // loop through all the option inside the select
      $(this).find("option").each(function(){

         // check if the value attribute matches the selected variable
         if($(this).attr("value") == selected){

            // if match, assign the option's selected attribute to true
            $(this).attr("selected") = true;
         }
      });
   });
});

Дайте мне знать, если это не сработает, включите вывод / рендеринг html вашего кода.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...