Я пытаюсь создать DropDownList
вид бритвы.
Кто-нибудь поможет мне с этим?
Нормальный код HTML5:
<select id="dropdowntipo">
<option value="Exemplo1">Exemplo1</option>
<option value="Exemplo2">Exemplo2</option>
<option value="Exemplo3">Exemplo3</option>
</select>
Я пробовал это:
@{
var listItems = new List<ListItem> {
new ListItem { Text = "Exemplo1", Value = "Exemplo1" },
new ListItem { Text = "Exemplo2", Value = "Exemplo2" },
new ListItem { Text = "Exemplo3", Value = "Exemplo3" }
};
}
@Html.DropDownListFor(model =>
model.tipo,
new SelectList(listItems),
"-- Select Status --"
)
c#
asp.net-mvc
razor
user2232273
источник
источник
var listItems = ...
должны быть в вашем контроллере, а не в вашем представлении.ListItem
поскольку это концепция, привязанная к пользовательскому интерфейсу. Его даже не должно быть в модели представления, только в представлении. Контроллер должен построить модель представления, модель представления должна содержать данные, представление должно строить элементы пользовательского интерфейса (напримерListItem
) для этих данных.Ответы:
@{ List<SelectListItem> listItems= new List<SelectListItem>(); listItems.Add(new SelectListItem { Text = "Exemplo1", Value = "Exemplo1" }); listItems.Add(new SelectListItem { Text = "Exemplo2", Value = "Exemplo2", Selected = true }); listItems.Add(new SelectListItem { Text = "Exemplo3", Value = "Exemplo3" }); } @Html.DropDownListFor(model => model.tipo, listItems, "-- Select Status --")
источник
@{var listItems = new List<ListItem> { new ListItem { Text = "Exemplo1", Value="Exemplo1" }, new ListItem { Text = "Exemplo2", Value="Exemplo2" }, new ListItem { Text = "Exemplo3", Value="Exemplo3" } }; } @Html.DropDownList("Exemplo",new SelectList(listItems,"Value","Text"))
источник
Вы можете использовать это:
@Html.DropDownListFor(x => x.Tipo, new List<SelectListItem> { new SelectListItem() {Text = "Exemplo1", Value="Exemplo1"}, new SelectListItem() {Text = "Exemplo2", Value="Exemplo2"}, new SelectListItem() {Text = "Exemplo3", Value="Exemplo3"} })
источник
// ViewModel
public class RegisterViewModel { public RegisterViewModel() { ActionsList = new List<SelectListItem>(); } public IEnumerable<SelectListItem> ActionsList { get; set; } public string StudentGrade { get; set; } }
// Класс Enum:
public enum GradeTypes { A, B, C, D, E, F, G, H }
// Действие контроллера
public ActionResult Student() { RegisterViewModel vm = new RegisterViewModel(); IEnumerable<GradeTypes> actionTypes = Enum.GetValues(typeof(GradeTypes)) .Cast<GradeTypes>(); vm.ActionsList = from action in actionTypes select new SelectListItem { Text = action.ToString(), Value = action.ToString() }; return View(vm); }
// просмотр действия
<div class="form-group"> <label class="col-lg-2 control-label" for="hobies">Student Grade:</label> <div class="col-lg-10"> @Html.DropDownListFor(model => model.StudentGrade, Model.ActionsList, new { @class = "form-control" }) </div>
источник
Вот самый простой ответ:
на ваш взгляд, просто добавьте:
@Html.DropDownListFor(model => model.tipo, new SelectList(new[]{"Exemplo1", "Exemplo2", "Exemplo3"}))
ИЛИ в вашем контроллере добавьте:
var exemploList= new SelectList(new[] { "Exemplo1:", "Exemplo2", "Exemplo3" }); ViewBag.ExemploList = exemploList;
и ваше мнение просто добавьте:
Я узнал об этом с Джесс Чедвик
источник
Поверьте, я перепробовал много вариантов, и у меня есть ответ здесь
но я всегда ищу передовой опыт, и лучший способ, который я знаю на данный момент, как для интерфейсных, так и для серверных разработчиков
for loop
(да, я не шучу)Потому что, когда интерфейс предоставляет вам страницы пользовательского интерфейса с фиктивными данными, он также добавил классы и некоторые встроенные стили для определенной опции выбора, поэтому
hard to deal
с использованиемHtmlHelper
Взгляните на это:
<select class="input-lg" style=""> <option value="0" style="color:#ccc !important;"> Please select the membership name to be searched for </option> <option value="1">11</option> <option value="2">22</option> <option value="3">33</option> <option value="4">44</option> </select>
это от интерфейсного разработчика, поэтому лучшим решением является использование цикла for
fristly
create
илиget your list
данных из (...) в действии контроллера и поместите его в ViewModel, ViewBag или что-то еще//This returns object that contain Items and TotalCount ViewBag.MembershipList = await _membershipAppService.GetAllMemberships();
Во-вторых, в представлении выполните простой цикл for для заполнения раскрывающегося списка
<select class="input-lg" name="PrerequisiteMembershipId" id="PrerequisiteMembershipId"> <option value="" style="color:#ccc !important;"> Please select the membership name to be searched for </option> @foreach (var item in ViewBag.MembershipList.Items) { <option value="@item.Id" @(Model.PrerequisiteMembershipId == item.Id ? "selected" : "")> @item.Name </option> } </select>
таким образом вы не нарушите дизайн пользовательского интерфейса, а его простой, легкий и более читаемый
надеюсь, это поможет вам, даже если вы не использовали бритву
источник
Использование массива было бы немного эффективнее, чем создание списка.
@Html.DropDownListFor(x => x.Tipo, new SelectListItem[]{ new SelectListItem() {Text = "Exemplo1", Value="Exemplo1"}, new SelectListItem() {Text = "Exemplo2", Value="Exemplo2"}, new SelectListItem() {Text = "Exemplo3", Value="Exemplo3"}})
источник
@{ List<SelectListItem> listItems= new List<SelectListItem>(); listItems.Add(new SelectListItem { Text = "One", Value = "1" }); listItems.Add(new SelectListItem { Text = "Two", Value = "2", }); listItems.Add(new SelectListItem { Text = "Three", Value = "3" }); listItems.Add(new SelectListItem { Text = "Four", Value = "4" }); listItems.Add(new SelectListItem { Text = "Five", Value = "5" }); } @Html.DropDownList("DDlDemo",new SelectList(listItems,"Value","Text"))
Обратитесь: - Создать раскрывающийся список в примере бритвы MVC 4
источник
просто используйте это
public ActionResult LoadCountries() { List<SelectListItem> li = new List<SelectListItem>(); li.Add(new SelectListItem { Text = "Select", Value = "0" }); li.Add(new SelectListItem { Text = "India", Value = "1" }); li.Add(new SelectListItem { Text = "Srilanka", Value = "2" }); li.Add(new SelectListItem { Text = "China", Value = "3" }); li.Add(new SelectListItem { Text = "Austrila", Value = "4" }); li.Add(new SelectListItem { Text = "USA", Value = "5" }); li.Add(new SelectListItem { Text = "UK", Value = "6" }); ViewData["country"] = li; return View(); }
и в View используйте следующее.
@Html.DropDownList("Country", ViewData["country"] as List<SelectListItem>)
если вы хотите получить данные из набора данных и заполнить эти данные в списке, используйте следующий код.
List<SelectListItem> li= new List<SelectListItem>(); for (int rows = 0; rows <= ds.Tables[0].Rows.Count - 1; rows++) { li.Add(new SelectListItem { Text = ds.Tables[0].Rows[rows][1].ToString(), Value = ds.Tables[0].Rows[rows][0].ToString() }); } ViewData["FeedBack"] = li; return View();
и в виду напишите следующий код.
@Html.DropDownList("FeedBack", ViewData["FeedBack"] as List<SelectListItem>)
источник
Если вы используете ASP.net 5 (MVC 6) или более позднюю версию, вы можете использовать новые помощники тегов для очень приятного синтаксиса:
<select asp-for="tipo"> <option value="Exemplo1">Exemplo1</option> <option value="Exemplo2">Exemplo2</option> <option value="Exemplo3">Exemplo3</option> </select>
источник
Это также можно сделать как
<select id="dropdowntipo"> <option value="0">Select Item</option> @{ foreach(var item in Model) { <option value= "@item.Value">@item.DisplayText</option> } } </select>
источник
List<tblstatu> status = new List<tblstatu>(); status = psobj.getstatus(); model.statuslist = status; model.statusid = status.Select(x => new SelectListItem { Value = x.StatusId.ToString(), Text = x.StatusName }); @Html.DropDownListFor(m => m.status_id, Model.statusid, "Select", new { @class = "form-control input-xlarge required", @type = "text", @autocomplete = "off" })
источник