gpt4 book ai didi

asp.net-mvc - 在 asp.net-mvc 站点上,为什么 html DropdownlistFor() 不能正常工作?

转载 作者:行者123 更新时间:2023-12-02 05:26:38 25 4
gpt4 key购买 nike

我遇到下拉列表中的项目未被选中的问题。我正在构建一组 SelectListItems 并将正确的设置为 selected = true 但它没有被选中。

我的 Controller 中有以下代码:

    public ActionResult Edit(int id)
{
var p = _myRepository.FindBy(id);
var vm = new MyViewModel(p) { CategoryTypes = ControllerUtils.GetList(_myTypeRepository, r => r.Name, p.CategoryType.Id) };

return View(vm);
}

这是 ControllerUtils 类中的 GetList 函数:

public static class ControllerUtils
{
public static IEnumerable<SelectListItem> GetList<T>(IIntKeyedRepository<T> list, Func<T, string> getName, int id) where T : BaseModel
{
var items = list.All().ToList();
var itemsList = items.Select(r => new SelectListItem() { Selected = r.Id == id, Text = getName(r), Value = r.Id.ToString() });
return itemsList;
}
}

这是我的 View 代码:

    <div class="editor-label">
@Html.LabelFor(model => model.MyObject.CategoryType)
</div>
<div class="editor-field">
@Html.DropDownListFor(model => model.MyObject.CategoryType, Model.CategoryTypes)
@Html.ValidationMessageFor(model => model.MyObject.CategoryType)
</div>

当我在 Controller 代码中调试并将列表放入 SelectListItem 对象数组时,我确实看到第二项已选择 = true。但是当我检查 View HTML 时,我没有看到任何一个项目被选中:

<select id="CategoryType" name="CategoryType">
<option value="1">Choice 1</option>
<option value="2">Choice 2</option>
</select>

如您所见,任何一项都没有“selected="selected"。对这里可能发生的事情有什么建议吗?

最佳答案

DropDownListFor 助手的第一个参数必须是一个 lambda 表达式,指向包含所选值的 View 模型上的原始类型属性:

@Html.DropDownListFor(
model => model.MyObject.CategoryType.Id,
Model.CategoryTypes
)

现在去掉 SelectListItem 中的 Selected = r.Id == id 属性。你不需要它。现在假设 Model.MyObject.CategoryType.IdModel.CategoryTypes 中有一个具有匹配值的对应项目,助手将自动预选该项目。

关于asp.net-mvc - 在 asp.net-mvc 站点上,为什么 html DropdownlistFor() 不能正常工作?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12989322/

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