C# と VB.NET の質問掲示板

わんくま同盟

ASP.NET、C++/CLI、Java 何でもどうぞ

C# と VB.NET の入門サイト

ツリー一括表示

.NET IdentityでのDisplayNameFor /さまさま (20/08/31(Mon) 15:30) #95651
Re[1]: .NET IdentityでのDisplayNameFor /WebSurfer (20/09/01(Tue) 07:31) #95657
Re[1]: .NET IdentityでのDisplayNameFor /WebSurfer (20/09/01(Tue) 12:35) #95662
  └ Re[2]: .NET IdentityでのDisplayNameFor /さまさま (20/09/01(Tue) 19:24) #95664
    └ Re[3]: .NET IdentityでのDisplayNameFor /WebSurfer (20/09/02(Wed) 09:32) #95675
      └ Re[4]: .NET IdentityでのDisplayNameFor /さまさま (20/09/02(Wed) 15:42) #95688 解決済み


親記事 / ▼[ 95657 ] ▼[ 95662 ]
■95651 / 親階層)  .NET IdentityでのDisplayNameFor
□投稿者/ さまさま (1回)-(2020/08/31(Mon) 15:30:29)

分類:[.NET 全般] 

ASP.NET MVCでASP.NET Identityを使用したサイトのユーザー一覧ページを作成しようとしています。

下記は、「AspNetUsers」テーブルに拡張した「DisplayName」というカラムで、
ビュー側で「@Html.DisplayNameFor」で一覧の列見出しを表示すると“表示名”となります。

デフォルトで持っている「UserName」カラムの列見出し文字を指定するにはどのようにすれば良いでしょうか?
[Display (Name = "表示名")]を記述する場所が見当たらず、そのまま“UserName”という見出しになっている状態です。


public class ApplicationUser : IdentityUser
{
[Column(TypeName = "nvarchar")]
[StringLength(256)]
[Display (Name = "表示名")]
public string DisplayName { get; set; }


〜 省略 〜
}


宜しくお願い致します。
[ □ Tree ] 返信 編集キー/

▲[ 95651 ] / 返信無し
■95657 / 1階層)  Re[1]: .NET IdentityでのDisplayNameFor
□投稿者/ WebSurfer (2098回)-(2020/09/01(Tue) 07:31:35)
No95651 (さまさま さん) に返信

開発環境 (OS, Visual Studio のバージョン、.NET Framework / Core どっちかとそのバージョンなど) を書いてください。

質問のコードにある DisplayName プロパティの目的は何ですか? それと UserName とどういう関係があるのですか? Migration して DB のテーブルに追加してあるのですか?
[ 親 95651 / □ Tree ] 返信 編集キー/

▲[ 95651 ] / ▼[ 95664 ]
■95662 / 1階層)  Re[1]: .NET IdentityでのDisplayNameFor
□投稿者/ WebSurfer (2099回)-(2020/09/01(Tue) 12:35:11)
No95651 (さまさま さん) に返信

返事がないので DisplayName が何なのかわかりませんが、UserName プロパティの話とは関係ない
と勝手に理解して・・・

別に以下のようなビューモデルを定義してそれを使ってはいかがですか。

namespace MySQLIdentity.Models
{
    // UserController の Index, Details, Delete 用
    public class UserModel
    {
        public string Id { get; set; }
 
        [Display(Name = "ユーザー名")]
        public string UserName { get; set; }
 
        [Display(Name = "メールアドレス")]
        public string Email { get; set; }
 
        [Display(Name = "メール確認済")]
        public bool EmailConfirmed { get; set; }
 
        // ・・・中略・・・
    }
}

具体例は、Core 3.1 の場合ですが、以下の記事を見てください。

ASP.NET Identity のユーザー管理 (CORE)
http://surferonwww.info/BlogEngine/post/2020/05/31/user-management-on-aspnet-core-mvc.aspx

詰め替えるという操作が面倒かもしれませんが、

(1) スキャフォールディング機能を使って View を生成できない。

(2) 表示名を自由に付けられない(質問者さんの問題と同じ)。

・・・という理由でやむを得ないと思いました。

上の記事には "詰め替えの手間を減らすため、先の記事「EDM にデータアノテーション属性を付与」に
書いたようなメタデータクラスを作って対応することもトライしましたが、無駄な努力でした" と書い
てありますが、ひょっとしたら Core ではなく .NET Framework では可能かもしれません。試して結果
を連絡いただけると幸いです。 

[ 親 95651 / □ Tree ] 返信 編集キー/

▲[ 95662 ] / ▼[ 95675 ]
■95664 / 2階層)  Re[2]: .NET IdentityでのDisplayNameFor
□投稿者/ さまさま (2回)-(2020/09/01(Tue) 19:24:59)
WebSurferさま

ありがとうございます。
すみません。確認が遅れてしまいました。

> 開発環境 (OS, Visual Studio のバージョン、.NET Framework / Core どっちかとそのバージョンなど) を書いてください。
> 質問のコードにある DisplayName プロパティの目的は何ですか? それと UserName とどういう関係があるのですか? Migration して DB のテーブルに追加してあるのですか?

環境は、Windows10、Visual Studio 2019、ASP.NET MVC、C#、.NET Framework4.8となります。
DisplayNameプロパティの目的ですが、
プロジェクトを新規で作る際にASP.NET Identityの含まれているテンプレートとして選びました。
自動で生成された「AspNetUsers」テーブルには日本語名のようなフィールドが無かった為、
https://codezine.jp/article/detail/7845
にあるようにプロパティとして追加した次第です。

まさしく、教えて頂いたこちらの内容そのものなのですが、
> ASP.NET Identity のユーザー管理 (CORE)
> http://surferonwww.info/BlogEngine/post/2020/05/31/user-management-on-aspnet-core-mvc.aspx

すでに「AspNetUsers」からスキャフォールディングでコントローラーやビューを生成後だったのと、
ASP.NET Identityで自動生成されたプロパティ(例えばUserName等)に属性を後付けできないものか、と根拠もなく思ってしまい
質問させて頂きました。

教えて頂いた通り、ビューモデルをバインドするか、もしくはビュー上に直書きするか、
どちらかにしようと思います。



[ 親 95651 / □ Tree ] 返信 編集キー/

▲[ 95664 ] / ▼[ 95688 ]
■95675 / 3階層)  Re[3]: .NET IdentityでのDisplayNameFor
□投稿者/ WebSurfer (2101回)-(2020/09/02(Wed) 09:32:11)
No95664 (さまさま さん) に返信

解決済みマークを付けてこのスレッドはクローズしてください。

まだ解決してなくて、質問などがある場合はそれを書いてください。
[ 親 95651 / □ Tree ] 返信 編集キー/

▲[ 95675 ] / 返信無し
■95688 / 4階層)  Re[4]: .NET IdentityでのDisplayNameFor
□投稿者/ さまさま (3回)-(2020/09/02(Wed) 15:42:59)
ビューモデルをバインドすることにします。
ありがとうございました。

解決とさせていただきます。
解決済み
[ 親 95651 / □ Tree ] 返信 編集キー/


管理者用

- Child Tree -