0

我有一个在 C# 的 Razor 视图中收到的对象列表

 @model IEnumerable<Project.Models.EvaluationObject>

在 IEnumerable 的每个对象中,我都有一个名为“MaxValue”的属性,我想将其放在 html 的输入选择中。

  foreach(var item in Model){
        <select>
            <option value=1>One</option>
            <option value=2>Two</option>
            <option value=3>Three</option>
            <option value=4>Four</option>
        </select>

  }

对于每个项目,我想使用 item.MaxValue 选择的值构建一个选择输入

即在第一个循环 item.MaxValue = 3 中,那么我应该构建下一个选择:

       <select>
            <option value=1>One</option>
            <option value=2>Two</option>
            <option value=3 selected="selected">Three</option>
            <option value=4>Four</option>
        </select>

item.MaxValue 介于 1 和 4 之间,因此如果值为 3,则选择输入中的选定值是 3。

我的第一个解决方案是在每个选项中添加一个 if 语句,但我认为这是不切实际的:

 foreach(var item in Model){
    <select>
        <option value=1 @if(item.MaxValue==1){<text>selected="selected"</text>})>One</option>
        <option value=2 @if(item.MaxValue==2){<text>selected="selected"</text>}>Two</option>
        <option value=3 @if(item.MaxValue==3){<text>selected="selected"</text>}>Three</option>
        <option value=4 @if(item.MaxValue==4){<text>selected="selected"</text>}>Four</option>
    </select>

 }

希望你能帮助我,也许我应该使用一些 JavaScript。

4

1 回答 1

1

You can add a IEnumerable<SelectListItem> to your model:

Model:

public class EvaluationObject
{
    public IEnumerable<SelectListItem> EvaluationList
    {
        get
        {
            return Enumerable.Range(1, 4)
                             .Select(x => new SelectListItem
                                 {
                                     Selected = x == MaxValue,
                                     Text = NumberToWord(x),
                                     Value = x
                                 });
        }
    }

    public int MaxValue { get; set; }

    public int EvaluationNumber { get; set; }
}

View:

foreach (var item in Model) 
{
    @Html.DropDownListFor(x => x.EvaluationNumber, item.EvaluationList)
}
于 2013-05-22T00:24:11.057 回答