1

我有一个自定义模板~/Views/Shared/EditorTemplate/String.cshtml,它似乎导致了异常:

The model item passed into the dictionary is of type 'Proj.Models.EnumType', but this dictionary requires a model item of type 'System.String'.

它似乎只发生在Enums。如果我删除模板,它也会消失。模板似乎没有引起它,我认为它甚至没有那么远。我可以把任何东西放在那里,例外是一样的。

所以...如果我有一个,我不能用一个@Html.EditorFor和一个吗?modelenumcustom template

一些上下文:

模型:

namespace Proj.Models
{

    public enum EnumType
    {
      A = 0,
      B = 1,
      C = 2,
    }

    public class Mod
    {
      [Required]
      public String Name;

      [Required]
      public EnumType Letter;
    }

}

看法:

@model Proj.Models.Mod
@Html.EditorFor(m=>m) // Exception happens here
4

1 回答 1

1

这是我发现对我有用的东西。

在您的模板中,确保将您的模型声明为可为空的枚举类型。然后,在代码中,检查它是否具有值并基于该值进行适当的格式化。

@inherits System.Web.Mvc.WebViewPage<Proj.Models.EnumType?>

@{
    Proj.Models.EnumType v = Model.HasValue ? Model.Value : {*some-default-value*};

    @Html.{*Your-formatter-here*};            
}
于 2013-06-13T14:46:32.583 回答