简体   繁体   English

不支持返回类型'System.String'。 参数名称:表达式MVC枚举

[英]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.

相关问题 数组的反序列化不支持类型“System.String” - Type 'System.String' is not supported for deserialization of an array 数组不支持Type.String - Type System.String is not supported of an array 类型&#39;System.String&#39;不支持序列运算符。 - Sequence operators not supported for type 'System.String'. 类型&#39;System.String []&#39;不支持比较运算符 - Comparison operators not supported for type 'System.String[]' System.ArgumentException:&#39;不支持服务类型ICommand。 参数名称:serviceType - System.ArgumentException: 'The service type ICommand is not supported. Parameter name: serviceType 'System.String' 类型的表达式不能用于'System.Reflection.PropertyInfo' 类型的参数 - 'Expression of type 'System.String' cannot be used for parameter of type 'System.Reflection.PropertyInfo' 从类型“System.String”到类型“System.Web.Mvc.SelectListItem”的参数转换失败 - The parameter conversion from type 'System.String' to type 'System.Web.Mvc.SelectListItem' failed 不支持服务类型IAssembliesResolver。 参数名称:serviceType - The service type IAssembliesResolver is not supported. Parameter name: serviceType Linq-to-Sql - 类型&#39;System.String&#39;不支持的序列运算符 - Linq-to-Sql - Sequence operators not supported for type 'System.String' 导致此错误的原因:类型&#39;System.String&#39;不支持序列运算符 - what causes this error: Sequence operators not supported for type 'System.String'
 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM