MVC DropDownListFor破坏回发值

时间:2018-07-05 15:23:36

标签: model-view-controller dropdownlistfor

编辑器模板包含一个下拉列表控件,允许用户选择一个值。大多数情况下,值为“否”和“是”

@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”。某些值可能没问题。该问题看起来像是在后期处理和操作之间,因为传入模型存在此损坏。

enter image description here

0 个答案:

没有答案