C# 返回类型';System.String';不支持。参数名称:表达式MVC枚举
我正在尝试从Asp.net MVC中的枚举创建下拉列表。用下面的代码,我得到了上面的错误 以下是代码:C# 返回类型';System.String';不支持。参数名称:表达式MVC枚举,c#,asp.net-mvc-4,enums,C#,Asp.net Mvc 4,Enums,我正在尝试从Asp.net MVC中的枚举创建下拉列表。用下面的代码,我得到了上面的错误 以下是代码: <div class="col-md-10"> @Html.EnumDropDownListFor(model => model.SenderType, null, htmlAttributes: new { @class = "form-control" }) @Html.ValidationMessageFor(model
<div class="col-md-10">
@Html.EnumDropDownListFor(model => model.SenderType, null, htmlAttributes: new { @class = "form-control" })
@Html.ValidationMessageFor(model => model.SenderType, "", new { @class = "text-danger" })
</div>
型号:
public enum SenderType
{
Transactional,
Promotional
}
public class SenderModel
{
[Key]
public int SenderId { get; set; }
[Display(Name = "Sender Name")]
public string SenderName { get; set; }
[Display(Name = "Sender Type")]
public string SenderType { get; set; }
[Display(Name = "Sender Purpose")]
public string SenderPurpose { get; set;}
public int UserId { get; set; }
public virtual ApplicationUser User { get; set; }
}
我已经发布了我的代码。感谢您的帮助,因为您的模型中有
SenderType
属性作为字符串类型,该属性已在razor中使用,EnumDropDownList for
不支持该属性EnumDropDownListFor
expect enum type属性,因此您的SenderType
属性应为SenderType
enum类型。因此,您的模型应该是:
public class SenderModel
{
[Key]
public int SenderId { get; set; }
[Display(Name = "Sender Name")]
public string SenderName { get; set; }
[Display(Name = "Sender Type")]
public SenderType SenderType { get; set; } // SenderType should be of type enum SenderType
[Display(Name = "Sender Purpose")]
public string SenderPurpose { get; set;}
public int UserId { get; set; }
public virtual ApplicationUser User { get; set; }
}
什么是model.SenderType?您可以在模型中将“publicstringsenderType{get;set;}”视为EnumDropDownListFor不支持的字符串类型
public class SenderModel
{
[Key]
public int SenderId { get; set; }
[Display(Name = "Sender Name")]
public string SenderName { get; set; }
[Display(Name = "Sender Type")]
public SenderType SenderType { get; set; } // SenderType should be of type enum SenderType
[Display(Name = "Sender Purpose")]
public string SenderPurpose { get; set;}
public int UserId { get; set; }
public virtual ApplicationUser User { get; set; }
}