gpt4 book ai didi

asp.net - 多个Html.dropdownlistfor同一个selectlist,设置选中值

转载 作者:行者123 更新时间:2023-12-02 04:53:45 25 4
gpt4 key购买 nike

我有一个带有多个下拉列表的添加/编辑 View ,所有内容都来自同一个选择列表。当我尝试填充 View 以进行编辑时,所有下拉列表都选择了与第一个相同的选项。有没有解决的办法?我不想使用多个选择列表,因为它们都具有相同的内容。

大多数下拉列表是从一个列表创建的,每个项目都有一个下拉列表。这是 View 的第一部分,它不是从项目列表创建的。

        <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>

这是我循环项目列表以创建下拉列表的部分。

@{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;
}

这是我的 View 模型

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;
}
}

这是我填写表格的编辑操作

    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);
}

希望有人能帮我解决这个问题。如果您需要更多代码,请发表评论。

最佳答案

而不是仅仅提供 Model.DifficultiesDropDownListFor助手尝试传递它:

new SelectList(Model.Difficulties, object selectedValue)

或另一个允许您指定值和文本字段的重载:

new SelectList(Model.Difficulties, string dataValueField, string dataTextField, object selectedValue)

使用其中之一作为 DropDownListFor 的第二个参数 helper 。创建 SelectList来自 List<SelectListItem>允许您设置最初选择的值。

关于asp.net - 多个Html.dropdownlistfor同一个selectlist,设置选中值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18356924/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com