Вызов метода со страницы razor

#asp.net #.net #asp.net-mvc #asp.net-core #razor-pages

Вопрос:

У меня есть asp.net основной проект mvc.

В моем файле макета я хочу отобразить имя текущего пользователя, вошедшего в систему, таким образом, чтобы имя пользователя отображалось в заголовке. Для этого я хочу иметь возможность вызывать функцию в моем домашнем контроллере, которая делает это. Итак, я сделал простую функцию, которая выглядит так в домашнем контроллере:

     public String GetLoggedInuser()
    {
        return "garse garsebro";
    }
 

И тогда я испробовал все методы, которые смог найти. Первые пару методов здесь-это просто функции, предлагаемые в Интернете, которые мне просто недоступны:

 @HtmlHelper.Action("GetLoggedInuser");
@Html.RenderAction("GetLoggedInuser");
 

И это лишь некоторые из них. Тогда есть вот это, которое я могу найти:

  @Html.ActionLink("GetLoggedInuser")
 

Но для этого моя функция «GetLoggedInuser» нигде не может быть найдена.

Как вы на странице razor вызываете функцию контроллера, чтобы вы могли получить возвращенную строку из этой функции и отобразить ее?

Комментарии:

1. Для чего это вам нужно ? вы должны показать свою страницу макета, модель страницы бритвы и так далее.

2. Я немного не уверен в вопросе? Мне нужно использовать его для отображения имени пользователя, вошедшего в систему, в верхнем левом заголовке. Я не хочу просто передавать ему модель, потому что есть несколько контроллеров и действий, которые должны ее визуализировать. В противном случае мне понадобилось бы, чтобы все модели, которые возвращаются, содержали текущее имя пользователя, вошедшего в систему

Ответ №1:

Если вы используете Microsoft.АспНет.Удостоверение личности, то ниже строки будет выполнять работу после входа в систему.

 @Html.ActionLink("Hello "   User.Identity.GetUserName()   "!", "Index", "Manage", routeValues: null, htmlAttributes: new { title = "Manage" })
 

Комментарии:

1. Я боюсь, что я не 🙁

2. Я использую linux, и настройка для этого оказалась безумной

Ответ №2:

Вы можете попробовать использовать ajax для вызова действия,чтобы получить имя пользователя и добавить его в html:

 <div id="username">

</div>
@section scripts
{

    <script>
        $(function () {
            $.ajax({
                type: "GET",
                url: 'GetLoggedInuser',
            }).done(function (result) {
                $("#username").html(result);
            });
        })
    </script>
}