![](/img/trans.png)
[英]Type 'System.String' is not supported for deserialization of an array
[英]Return type 'System.String' is not supported. Parameter name: expression MVC Enum
我正在尝试从Asp.net MVC中的Enum创建下拉列表。 使用下面发布的代码,我遇到了以上错误。
这是代码:
<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 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);
}
模型:
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
属性作为字符串类型,因此EnumDropDownListFor
不支持。 EnumDropDownListFor
期望枚举类型属性,因此您的SenderType
属性应为SenderType
枚举类型。 因此,您的模型应为:
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.