Как я могу изменить значение ".GetUserName ()" в представлении _LoginPartial на поле базы данных? - PullRequest
0 голосов
/ 20 марта 2019

Мне нужно, чтобы значение изменилось на поле базы данных, оно должно показывать имя, но как мне это сделать?

<ul class="nav navbar-nav navbar-right">
    <li>
        @Html.ActionLink("Hello " + **User.Identity.GetUserId()** + "!", "Index", "Manage", routeValues: null, htmlAttributes: new { title = "Manage" })
    </li>
    <li><a href="javascript:document.getElementById('logoutForm').submit()">Log off</a></li>
</ul>

Мне нужно увидеть другое значение, а не поле электронной почты, как«Nombres» с использованием моих IdentityModels:

public class ApplicationUser : IdentityUser
{

    public int Rut { get; set; }
    public string Nombres { get; set; }
    public string Apellidos { get; set; }
    [DataType(DataType.Date)]
    [DisplayFormat(DataFormatString = "{0:dd-MM-yyy}", ApplyFormatInEditMode = true)]
    public DateTime FechaNacimiento { get; set; }
    public int Telefono { get; set; }
    public string Direccion { get; set; }
    public int Nacionalidad { get; set; }

User.Identity.GetUserId () показывает сообщение электронной почты, но мне нужно, чтобы показать данные «Nombres».

Ответы [ 2 ]

0 голосов
/ 21 марта 2019

Сначала вам нужно импортировать пространство имен Microsoft.AspNet.Identity.Owin в ваше представление. Установите приведенный ниже оператор поверх вашего представления.

@using Microsoft.AspNet.Identity.Owin

Теперь вы можете получить значение из OwinContext, вызвав контекст Usermanager, запустив метод FindMyName в контексте usermanager, который возвращает ваш объект ApplicationUser.

<ul class="nav navbar-nav navbar-right">
    <li>
        @Html.ActionLink("Hello " + HttpContext.Current.GetOwinContext().GetUserManager<ApplicationUserManager>().FindByName(User.Identity.Name).Nombres + "!", "Index", "Manage", routeValues: null, htmlAttributes: new { title = "Manage" })
    </li>
    <li><a href="javascript:document.getElementById('logoutForm').submit()">Log off</a></li>
</ul>
0 голосов
/ 20 марта 2019

вы можете попробовать это.

  1. создайте модель с нужным вам свойством.например: UserDisplayName

    class NavbarModel {
        public string UserDisplayName { get;set; }
    }

Свяжите свою модель с помощью метода действия HomeController Index.

    NavbarModel model = new NavbarModel();

    model.UserDisplayName = "some string";

Передать модель в частичное представление

В частичном представлении вы можете получить доступ к свойству и отобразить значение.


    @Html.ActionLink("Hello " + @Model.UserDisplayName  + "!", "Index", "Manage", routeValues: null, htmlAttributes: new { title = "Manage" })

Обратите внимание, что это всего лишь рабочий процесс, позволяющий реализовать эту функцию.

...