【发布时间】:2021-08-30 10:04:09
【问题描述】:
我在屏幕上有一个字段,我想限制可选择的值,所以我使用了一个由帮助程序从字典对象构建的下拉列表来仅显示有效选项。
当第一次从数据库加载并显示选项时,代码未翻译 - 而是提示“无选项”,即第一个选项,而不是记录中的选项。
一旦我从下拉列表中选择了一个有效的选项,它就可以正常工作。该新值在更新时被写入数据库。 我只是无法在初始加载/显示上转换现有值。我想我在控制器中遗漏了一些东西来将其设置为当前值?
字典:
public static class Options
{
public const string NoOption = "*NONE";
public const string OptionOne = "OP1";
public const string OptionTwo = "OP2";
public const string OptionThree = "OP3";
public const string OptionFour = "OP4";
public static IReadOnlyDictionary<string, string> Values =>
new Dictionary<string, string>
{
{ "No Option", NoOption },
{ "Option One", OptionOne },
{ "Option Two", OptionTwo },
{ "Option Three", OptionThree },
{ "Option Four", OptionFour }
};
}
型号:
public string Option { get; set; }
public IEnumerable<SelectListItem> OptionItems => Options.Values.ToSelectListItem();
助手扩展:
public static IEnumerable<SelectListItem> ToSelectListItem(
this IReadOnlyList<string> values) =>
from value in values
select new SelectListItem
{
Text = value.ToString(),
Value = value.ToString()
};
查看:
<div>
@Html.DropDownListFor(model => model.SelectedItem.Option, Model.SelectedItem.OptionItems, new { @id = "optionSelection" })
</div>
控制器:
public IActionResult OnGet()
{
selectedItem = itemData.GetItem(SearchTerm);
if (SelectedItem == null)
{
return RedirectToPage("./NotFound");
}
return Page();
}
【问题讨论】:
-
嗨@Allu,你的意思是DropDownList显示得很好,并且你想在页面加载时设置默认选择值?
-
是的,就是这样。下拉渲染,没问题。但是该字段中的值并没有获取它的文本翻译。相反,它总是显示列表中第一个选项的文本。
标签: c# asp.net asp.net-core .net-core razor