编辑器模板包含一个下拉列表控件,允许用户选择一个值。大多数情况下,值为“否”和“是”
@Html.DropDownListFor(model => model.CheckValue, DefaultValuesAsSelectList(Model.DefaultValues, Model.CheckValue), new { @class = "form-control mb-2" })
在编辑器Templte视图中,一个辅助方法返回DropDownList选项的SelectList(这些输入在另一页上,并使用TextArea允许用户在每行上输入一个值。此数据是带有换行符作为分隔符)。换行符分隔的字符串通常有两个字符,因此我们必须对这两个字符进行拆分,并忽略空值
SelectList DefaultValuesAsSelectList(string values, string selectedValue)
{
var lines = values.Split(new[] { '\r', '\n' }, StringSplitOptions.RemoveEmptyEntries).ToList();
return new SelectList(lines, selectedValue);
}
视图可以正确呈现所需的HTML
<select name="CheckItems[5].CheckValue" class="form-control mb-2" id="CheckItems_5__CheckValue" data-val="true" data-val-length-max="64" data-val-length="max 64 characters">
<option>No</option>
<option>Yes</option>
在不更改任何选项和保存页面(回发)的情况下,ModelState通常在所选值的末尾包含一个随机字符。在这种情况下,它是“ r”,但也可以是“ i”。某些值可能没问题。该问题看起来像是在后期处理和操作之间,因为传入模型存在此损坏。