【问题标题】:Why am I getting "Cannot convert null to 'ScheduleType' because it is a non-nullable value type" here?为什么我在这里得到“无法将 null 转换为 'ScheduleType',因为它是不可为空的值类型”?
【发布时间】:2019-04-11 04:02:02
【问题描述】:

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

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

@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,就好像它可以为空一样?没有意义。

【问题讨论】:

  • 也许MyNamespace.ViewModels.Workflow.Schedule 命名空间中有一些static 代码会做坏事?
  • 只是确认一下,这是编译器错误,而不是运行时错误?如果您摆脱@using 并使用ScheduleType 的完整命名空间会发生什么?我试图了解是否出于某种奇怪的原因,它在错误的行上指示错误。

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


【解决方案1】:

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

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

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

【讨论】:

  • 没有明白你的意思 - 什么不起作用?更改为真实对象类型而不是值类型?问题很可能在于使用值类型而不是对象类型,因此在尝试转换时会引发错误
猜你喜欢
  • 2014-07-18
  • 1970-01-01
  • 2018-02-10
  • 2016-09-26
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2011-08-11
  • 2019-01-06
相关资源
最近更新 更多