9

ユーザー/アドレス/アドレスのリストなど、複雑なタイプのモデルがあります

public class User{
public List<Address> Addresses{get;set;}
}

私のビューでは、これを表示しています

<fieldset><legend>@Html.DisplayNameFor(model=>model.Addresses)</legend>
<table>       
<tr>
    <th>
        @Html.DisplayNameFor(m => Model.Addresses.Street)
    </th>
    <th>
        @Html.DisplayNameFor(model => model.Addresses.City)
    </th>
<th>
        @Html.DisplayNameFor(model => model.Addresses.State)
    </th>

    </tr>
@foreach (var item in Model.Addresses) {    
<tr>
    <td>
        @Html.DisplayFor(m => item.Street)
    </td>
    <td>
        @Html.DisplayFor(m => item.City)
    </td>
    <td>
        @Html.DisplayFor(m => item.State)
    </td>
</tr>
} 
    </table></fieldset>

DisplayNameFor Street/City/State は機能しません。

サブオブジェクトで DisplayNameFor を取得する適切な方法は何ですか?

ティア・J

4

6 に答える 6

12

私が変更され

@Html.DisplayNameFor(m => Model.Addresses.Street)

@Html.DisplayNameFor(m => Model.Addresses.FirstOrDefault().Street)

@Html.DisplayNameFor(m => Model.Addresses[0].Street)最初の行を編集する必要がある場合、この方法では編集できないため、使用しないでください。

すべてが期待どおりに機能するようになりました。

于 2012-08-29T17:46:00.910 に答える
1

Linq を使用してインデックス作成エラーを回避することもできます。私はこれが私のコードです -

@Html.DisplayNameFor(m => Model.Addresses.first().Street)

そして、次のエラーはなくなりました。

Cannot apply indexing with [] to an expression of type 'System.Data.Objects.DataClasses.EntityCollection<Address>

ただし、次のステートメントを使用して名前を直接使用することをお勧めします

@Html.DisplayName("Street")
于 2014-11-04T14:36:26.970 に答える
0

address プロパティの名前を表示するには、空のAdressモデルを定義することができます

{
  var adress =new Models.Address();
}

そして、このように使用します

 @Html.DisplayNameFor(m => adress.Street)
于 2015-04-22T14:44:33.167 に答える
-1

使い方DisplayNameForが間違っています。はリストであり、 、、Addressesなどのプロパティはありません。では、名前が表示されることをどのように期待するか。StreetCityState

この場合、ヘルパーを使用する代わりに、ビュー内の名前を直接使用するのは簡単ではありませんか。

于 2012-08-29T14:24:38.283 に答える