[英]Return type 'System.String' is not supported. Parameter name: expression MVC Enum
I am trying to create dropdown list from Enum in Asp.net MVC. 我正在尝试从Asp.net MVC中的Enum创建下拉列表。 With the below posted code, I am getting above error.
使用下面发布的代码,我遇到了以上错误。
Here is code: 这是代码:
<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>
My controller: 我的控制器:
public ActionResult Create([Bind(Include = "SenderId,SenderName,SenderType,SenderPurpose,UserId")] SenderModel senderModel)
{
try
{
if (ModelState.IsValid)
{
var currentUserId = User.Identity.GetUserId();
senderModel.UserId = int.Parse(currentUserId);
db.Sender.Add(senderModel);
db.SaveChanges();
return RedirectToAction("Index");
}
}
catch (DataException /* dex */)
{
//Log the error (uncomment dex variable name and add a line here to write a log.
ModelState.AddModelError("", "Unable to save changes. Try again, and if the problem persists see your system administrator.");
}
return View(senderModel);
}
Model: 模型:
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; }
}
I have posted my code. 我已经发布了我的代码。 Help would be appreciated
帮助将不胜感激
As you have SenderType
property as string type in your model which has been used in your razor, which is not supported by EnumDropDownListFor
. 由于在剃刀中使用的模型中具有
SenderType
属性作为字符串类型,因此EnumDropDownListFor
不支持。 EnumDropDownListFor
expect enum type property so your SenderType
property should be of type SenderType
enum. EnumDropDownListFor
期望枚举类型属性,因此您的SenderType
属性应为SenderType
枚举类型。 So, your model should be : 因此,您的模型应为:
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; }
}
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.