具有相同选择列表的多个Html.dropdownlist,设置选择的值 [英] Multiple Html.dropdownlistfor with the same selectlist, set selected value
问题描述
我有一个带有多个dropdownlistfor的Add/Edit视图,所有视图都来自同一选择列表.当我尝试填充editinng的视图时,所有dropdownlist的选择与第一个相同.有没有解决的办法?我不想使用多个选择列表,因为它们都具有相同的内容.
I have a Add/Edit View with several dropdownlistfor, all is populated from the same selectlist. When i try to populate the view for editinng all dropdownlist have the same selected as the first one. Is there a way around this? I don't wanna use multiple selectlist because they all have the same content.
大多数下拉列表是从一个列表创建的,每个项目只有一个下拉列表.这是视图的第一部分,它不是从项目列表创建的.
Most of the dropdownlist is create from a list with one dropdownlist per item. This the first part of the view that workes its not created from list of item.
<div class="control-group">
@Html.LabelFor(model => model.FirstRound, new { @class = "control-label" })
<div class="controls">
@Html.DropDownListFor(model => Model.FirstRound.Id, Model.Difficulties, new { @class = "span3 combobox"})
@Html.TextBoxFor(model => Model.FirstRound.Value, new { @class = "input-xlarge span1 sec-val", @readonly = "readonly"})
@Html.ValidationMessageFor(model => model.FirstRound.Value, null, new { @class = "help-inline" })
</div>
</div>
这是我循环显示项目列表以创建下拉列表的部分.
This is the part where i loop the list of item to create dropdownlists.
@{int counter = 0;}
@foreach (var item in Model.SecondRound)
{
<div class="control-group">
@Html.LabelFor(model => model.SecondRound, new { @class = "control-label" })
<div class="controls second-round">
@Html.DropDownListFor(model => model.SecondRound[counter].Id, Model.Difficulties, new { @class = "span3 combobox", @id = "SecondRound[" + counter + "].Id" })
@Html.TextBoxFor(model => Model.SecondRound[counter].Value, new { @class = "input-xlarge span1 sec-val", @readonly = "readonly"})
@Html.ValidationMessageFor(model => Model.SecondRound[counter].Value, null, new { @class = "help-inline" })
</div>
</div>
<hr />
counter = counter + 1;
}
这是我的ViewModel
This is my ViewModel
public class AddTariffTrampetVM
{
public string Team { get; set; }
[HiddenInput(DisplayValue=false)]
public int NumberOfGymnasts { get; set; }
[Display(Name="Difficulty")]
public RoundVM FirstRound { get; set; }
[Range(0.001d, 100.0d, ErrorMessage="You need to pick a difficulty for the first round!")]
public decimal FirstTotalValue { get; set; }
[Display(Name = "Difficulty")]
public IList<RoundVM> SecondRound { get; set; }
[Range(0.001d, 100.0d, ErrorMessage = "You need to pick difficulties for the second round!")]
public decimal SecondTotalValue { get; set; }
[Display(Name = "Difficulty")]
public IList<RoundVM> ThirdRound { get; set; }
[Range(0.001d, 100.0d, ErrorMessage = "You need to pick difficulties for the third round!")]
public decimal ThirdTotalValue { get; set; }
public List<SelectListItem> Difficulties { get; set; }
public AddTariffTrampetVM() : this(6)
{
}
public AddTariffTrampetVM(int numOfGymnast)
{
NumberOfGymnasts = numOfGymnast;
FirstRound = new RoundVM { Id = 0, Value = 0M };
SecondRound = new List<RoundVM>();
ThirdRound = new List<RoundVM>();
for (int i = 0; i < NumberOfGymnasts; i++)
{
SecondRound.Add(new RoundVM());
ThirdRound.Add(new RoundVM());
}
}
}
public class RoundVM {
public int Id { get; set; }
[Range(0.001d, 100.0d, ErrorMessage="Your need to pick a difficulty!")]
public decimal Value { get; set; }
public RoundVM()
{
Value = 0M;
}
}
这是我填写表单的编辑"操作
This is my Edit action to fill the form
public ActionResult Edit(int id)
{
var item = ServiceTariff.GetTariffTrampet(id);
var model = Mapper.Map<TariffTrampet, AddTariffTrampetVM>(item);
model.Difficulties = ServiceDifficulty.GetSelectListElementTrampet().ToList();
return View("Add", model);
}
希望有人可以帮助我.如果您需要更多代码,只需注释.
Hope someone can help me with this. If you need any more code just comment.
推荐答案
而不是仅向DropDownListFor
帮助器提供Model.Difficulties
,请尝试传递它:
Instead of just providing Model.Difficulties
to the DropDownListFor
helper try passing it:
new SelectList(Model.Difficulties, object selectedValue)
或另一个允许您指定值和文本字段的重载:
OR another overload that lets you specify the value and text field:
new SelectList(Model.Difficulties, string dataValueField, string dataTextField, object selectedValue)
使用其中一个作为DropDownListFor
助手的第二个参数.从List<SelectListItem>
创建SelectList
允许您设置初始选择的值.
Use one of these as the second argument for the DropDownListFor
helper. Creating a SelectList
from the List<SelectListItem>
allows you to set the initially selected value.
这篇关于具有相同选择列表的多个Html.dropdownlist,设置选择的值的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!