为什么在这里得到“因为它是不可为空的值类型,所以无法将null转换为'ScheduleType'”?

时间:2019-04-11 04:02:02

标签: c# asp.net asp.net-mvc razor razor-pages

我了解错误的含义,但在这种情况下不行。 VS的错误列表指向下面的第一行,并说

  

无法将null转换为“ ScheduleType”,因为它是不可为null的   值类型

@using MyNamespace.ViewModels.Workflow.Schedule

@model ScheduleType

<div class="form-group">
    <div id="scheduleTypeRadio">
        <div class="btn-group" data-toggle="buttons">
            @foreach (var value in Enum.GetValues(Model.GetType()).Cast<ScheduleType>())
            {
                <label class="btn btn-primary @if(Model == value) { <text>active</text> }">
                    @Html.RadioButton("scheduleType", value, new { onchange = "if($(this).prop('checked') === true) $(this).closest('form').submit();" })
                    @if (value == ScheduleType.OnDemand && ((bool?)ViewData["immediateMode"]) == true)
                    {
                        @:Immediate
                    }
                    else
                    {
                        @Html.DisplayFor(m => value)
                    }
                </label>
            }
        </div>
    </div>
</div>

确切的行是

@using MyNamespace.ViewModels.Workflow.Schedule

,该行如何使用ScheduleType好像可以为空?没有道理。

1 个答案:

答案 0 :(得分:0)

看起来您的模型是值类型(枚举)-@model ScheduleType

,然后使用它来获取可能的值-Enum.GetValues(Model.GetType())

我认为您可能希望使用对象类型的模型,并且在获取可能的枚举值的列表时,请尝试:Enum.GetValues(typeof(ScheduleType))