字符串列表的C#MVC下拉列表
我正在处理mvc中需要从下拉列表中选择的字符串项列表。下拉列表绑定良好,值的设置良好,但即使当前迭代的项与下拉列表中的项匹配,它也没有被预先选择为其值,有人能为我指出正确的方向吗字符串列表的C#MVC下拉列表,c#,asp.net-mvc,razor,html.dropdownlistfor,C#,Asp.net Mvc,Razor,Html.dropdownlistfor,我正在处理mvc中需要从下拉列表中选择的字符串项列表。下拉列表绑定良好,值的设置良好,但即使当前迭代的项与下拉列表中的项匹配,它也没有被预先选择为其值,有人能为我指出正确的方向吗 @for (var i = 0; i < Model.StringList.Count; i++) { if (BL.Helpers.StringHelpers.Validate(Model.DisplayStringSegments[i])) {
@for (var i = 0; i < Model.StringList.Count; i++)
{
if (BL.Helpers.StringHelpers.Validate(Model.DisplayStringSegments[i]))
{
<div id="editor-field">
@Html.DropDownListFor(m => m.StringList[i], Model.PosterOptions, String.Empty, new { })
</div>
}
else
{
<div id="editor-label">@Model.StringList[i]</div>
@Html.HiddenFor(model => model.StringList[i])
}
}
有人能告诉我为什么当前的StringList[i]没有被预先选择,即使它有“Test”的值吗 我必须“破解”一个解决方案,我通过以下方式做到: 更改我的ViewModel(Model.Options)
将列表添加到列表中
将我的下拉列表选择更改为以下内容,强制选择所选值
<div id="editor-field">
@{
string currentString = Model.StringList.ElementAt(i).ToString();
}
@Html.DropDownListFor(m => m.StringList[i], new SelectList(Model.Options, currentString), String.Empty, new {})
</div>
@{
string currentString=Model.StringList.ElementAt(i).ToString();
}
@DropDownListFor(m=>m.StringList[i],new SelectList(Model.Options,currentString),String.Empty,new{})
也许有更好的方法,但这是有效的 对于任何遇到这种情况的人 我必须“破解”一个解决方案,我通过以下方式做到: 更改我的ViewModel(Model.Options) <代码>列表到列表 将我的下拉列表选择更改为以下内容,强制选择所选值
<div id="editor-field">
@{
string currentString = Model.StringList.ElementAt(i).ToString();
}
@Html.DropDownListFor(m => m.StringList[i], new SelectList(Model.Options, currentString), String.Empty, new {})
</div>
@{
string currentString=Model.StringList.ElementAt(i).ToString();
}
@DropDownListFor(m=>m.StringList[i],new SelectList(Model.Options,currentString),String.Empty,new{})
也许有更好的方法,但这是有效的 另一种方法是在列表创建过程中设置当前选定项,如下所示:
PosterOptions.Add(new SelectListItem() { Text = "Test", Value = "Test", Selected = true });
@Html.DropDownListFor(m => m.StringList[i], new SelectList(Model.Options, Model.StringList[i]), String.Empty, new {})
另一种方法是在列表创建过程中设置当前选定项,如下所示:
PosterOptions.Add(new SelectListItem() { Text = "Test", Value = "Test", Selected = true });
@Html.DropDownListFor(m => m.StringList[i], new SelectList(Model.Options, Model.StringList[i]), String.Empty, new {})
我也有同样的问题,你的回答帮助了我。我不认为这是一个“黑客”虽然。因为在你的问题中,你对所有下拉列表都使用了相同的SelectList,所以即使你提到你不想为下拉列表创建多个列表,当你有多个下拉列表时,我也看不到其他方法,因为你需要指定不同的选择值 作为一个小型重构,您可以去掉temp变量,直接访问选定的值,如下所示:
PosterOptions.Add(new SelectListItem() { Text = "Test", Value = "Test", Selected = true });
@Html.DropDownListFor(m => m.StringList[i], new SelectList(Model.Options, Model.StringList[i]), String.Empty, new {})
在您的示例中,您不需要区分文本和值,但在我的示例中,这是必需的。必要时,可以通过为SelectList提供值和文本字段名来完成。例如,假设您需要多个具有国家/地区值的下拉列表,例如:
国家级:
public class Country
{
public string Code { get; set; }
public string Name { get; set; }
}
型号:
public List<string> CustomerCountryList { get; set; }
public IEnumerable<Country> CountryList { get; set; }
我也有同样的问题,你的回答帮助了我。我不认为这是一个“黑客”虽然。因为在你的问题中,你对所有下拉列表都使用了相同的SelectList,所以即使你提到你不想为下拉列表创建多个列表,当你有多个下拉列表时,我也看不到其他方法,因为你需要指定不同的选择值 作为一个小型重构,您可以去掉temp变量,直接访问选定的值,如下所示:
PosterOptions.Add(new SelectListItem() { Text = "Test", Value = "Test", Selected = true });
@Html.DropDownListFor(m => m.StringList[i], new SelectList(Model.Options, Model.StringList[i]), String.Empty, new {})
在您的示例中,您不需要区分文本和值,但在我的示例中,这是必需的。必要时,可以通过为SelectList提供值和文本字段名来完成。例如,假设您需要多个具有国家/地区值的下拉列表,例如:
国家级:
public class Country
{
public string Code { get; set; }
public string Name { get; set; }
}
型号:
public List<string> CustomerCountryList { get; set; }
public IEnumerable<Country> CountryList { get; set; }
福尔斯,谢谢你给我回电话。由于这些值是针对列表中的每个项目设置的,但列表中的每个项目都使用相同的下拉列表,所以这不起作用。这是因为我需要选择每个元素中保留的值,而不是总体默认值。您可以根据控制器中的任何条件设置所选属性。这不是设置默认值的必要条件。您可以从某处检索一个值,与当前的SelectListItem进行比较,然后将其设置为selected或not。由于这是一个字符串列表,因此我使用相同的下拉列表得到n个项目,下拉列表中有y个选项。n个项目中的每一个都需要根据其值选择不同的值,而y选项对每个项目保持不变。例如,如果我在PosterOptions中有6个项目,在StringList中有72个项目,我将呈现72个下拉列表,每个下拉列表都选择了不同的PosterOptions项目。我不想为下拉列表创建多个列表,谢谢您回复我。由于这些值是针对列表中的每个项目设置的,但列表中的每个项目都使用相同的下拉列表,所以这不起作用。这是因为我需要选择每个元素中保留的值,而不是总体默认值。您可以根据控制器中的任何条件设置所选属性。这不是设置默认值的必要条件。您可以从某处检索一个值,与当前的SelectListItem进行比较,然后将其设置为selected或not。由于这是一个字符串列表,因此我使用相同的下拉列表得到n个项目,下拉列表中有y个选项。n个项目中的每一个都需要根据其值选择不同的值,而y选项对每个项目保持不变。例如,如果我在PosterOptions中有6个项目,在StringList中有72个项目,我将呈现72个下拉列表,每个下拉列表都选择了不同的PosterOptions项目。我不想为下拉列表创建多个列表您绝对肯定
StringList[0]
的值是“Test”(区分大小写)?您绝对肯定StringList[0]
的值是“Test”(区分大小写)?