2017-05-17 8 views
0

私はASP .Net Core MVC 1.1ウェブアプリケーションを持っています。その中で、私は、ビューを持っている - 単に選択したレコードが表示さDetails.cshtmlオブジェクトにToString()値を表示する

public partial class PropertyType 
    { 
     [Key] 
     [DatabaseGenerated(DatabaseGeneratedOption.Identity)] 
     public int Id { get; set; } 
     public string PropertyTypeName { get; set; } 
     public override string ToString() 
     { 
      return PropertyTypeName; 
     } 
    } 

として:上記、「PropertyTypeは」で

@model InspectionsData.Models.House 

@{ 
    ViewData["Title"] = "Details"; 
} 

<h2>Details</h2> 

<div> 
    <dl class="dl-horizontal"> 
     @*<dd> 
      @Html.DisplayFor(model => model.Id) 
     </dd>*@ 
     <dt> 
      @Html.DisplayNameFor(model => model.Street1) 
     </dt> 
     <dd> 
      @Html.DisplayFor(model => model.Street1) 
     </dd> 
     <dt> 
      @Html.DisplayNameFor(model => model.Street2) 
     </dt> 
     <dd> 
      @Html.DisplayFor(model => model.Street2) 
     </dd> 
     <dt> 
      @Html.DisplayNameFor(model => model.Street3) 
     </dt> 
     <dd> 
      @Html.DisplayFor(model => model.Street3) 
     </dd> 
     <dt> 
      @Html.DisplayNameFor(model => model.City) 
     </dt> 
     <dd> 
      @Html.DisplayFor(model => model.City) 
     </dd> 
     <dt> 
      @Html.DisplayNameFor(model => model.Region) 
     </dt> 
     <dd> 
      @Html.DisplayFor(model => model.Region) 
     </dd> 
     <dt> 
      @Html.DisplayNameFor(model => model.Country) 
     </dt> 
     <dd> 
      @Html.DisplayFor(model => model.Country) 
     </dd> 
     <dt> 
      @Html.DisplayNameFor(model => model.PropertyType) 
     </dt> 
     <dd> 
      @Html.DisplayFor(model => model.PropertyType) 
     </dd> 
    </dl> 
</div> 
<div> 
    <a asp-action="Edit" asp-route-id="@Model.Id">Edit</a> | 
    <a asp-action="Index">Back to List</a> 
</div> 

は、次のようになりますクラスでありますあなたが見ることができます、私はそれが描画され、したがってPropertyTypeの値を表示するときに、ビューがToString()を実行するという希望でToString()メソッドをオーバーライドしていますが、それはそうしていません。だからそれは空白になるだけです。私は私の見解でこれを実行しようとしました:

@Html.DisplayFor(model => model.PropertyType.ToString()) 

しかし、それはその1ビット(エラーを好きではなかった:InvalidOperationExceptionが:テンプレートは、唯一のフィールドへのアクセス、プロパティへのアクセス、単一次元配列のインデックスを使用することができますか単一パラメータのカスタムインデクサ式) PropertyTypeクラスに文字列フィールドを追加し、表示するプロパティタイプのビューにバインドする必要がありますか?それとも、私が気づいていないよりエレガントなソリューションですか?

おかげで...

答えて

1

1つのオプションは、非常に簡単になります:勤務

@Model.PropertyType.ToString() 
+0

ありがとうjuunas、! – user1900799

+0

私は理解できる限り、あなたのソリューション(@ Model.PropertyType.ToString())は表示テンプレートを使用しません。この場合、それは問題ありません。しかし私は、私のモデルでこのプロパティを装飾し、そのプロパティをそのまま表示したいとしたら、他にどのような解決策があるのだろうかと思っています。 – user1900799

+0

ええ、それは本当です;)問題は、あなたが得たエラーがあなたの表現をプロパティにマップすることができないということです。あなたが文字列のプロパティを作成し、それを使用する場所について考えたことはうまくいくでしょう。 – juunas

関連する問題