私は任意のビューでユーザーのIDの名前をロードしています:
var oUser = db.User.FirstOrDefault(x => x.ID == User.Identity.Name.Remove(0, 6));
if (oUser == null || (oUser.firstname == null|| oUser.lastname == null))
ViewBag.User = User.Identity.Name.Remove(0, 6);
else
ViewBag.User = oUser.firstname + " " + oUser.lastname;
しかし、毎回ロードするのではなく、毎回 _layout にユーザー名の文字列を入れたいと思っています。ビューバッグにロードすることは可能かもしれませんが、フィールドをレイアウトに渡すコードをどこに置くべきかわかりません。
ちなみに、これは機能せず、私が探しているものではありません:
@if(Request.IsAuthenticated) {
<text>Welcome <b>@Context.User.Identity.Name</b>!
[ @Html.ActionLink("Log Off", "LogOff", "Account") ]</text>
}
else {
@:[ @Html.ActionLink("Log On", "LogOn", "Account") ]
}