2017-01-24 21 views
2

Asp.net MVCでEnumからドロップダウンリストを作成しようとしています。以下のコードでは、上記のエラーが発生しています。戻り値の型 'System.String'はサポートされていません。パラメータ名:expression 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; } 
} 

私は私のコードを掲載している。ここ

はコードです。助けがありがとう

+0

model.SenderTypeとは何ですか。 – DavidG

+0

EnumDropDownListForがサポートしていないモデルでは、 "public string SenderType {get; set;}"を文字列型として見ることができます –

答えて

2

あなたはEnumDropDownListForでサポートされていないあなたのモデルのひげ剃りで使用されているモデルの文字列タイプとしてSenderTypeプロパティを持っています。 EnumDropDownListFor enum型プロパティを期待するので、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; } 
} 
関連する問題