【问题标题】:Calling method from razor page从剃刀页面调用方法
【发布时间】:2021-11-29 04:33:09
【问题描述】:

我有一个 asp.net core mvc 项目。

在我的布局文件中,我想显示当前登录用户的名称,以便用户名显示在标题中。为此,我希望能够在我的家庭控制器中调用一个函数来执行此操作。 所以,我在家庭控制器中做了一个简单的函数,看起来像这样:

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

然后我尝试了所有能找到的方法。这里的前几个方法只是网络上建议的功能,我根本无法使用:

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

仅举几例。然后是这个,我可以找到:

 @Html.ActionLink("GetLoggedInuser")

但是对于这个,我的函数“GetLoggedInuser”在任何地方都找不到。

你如何在剃须刀页面中调用控制器函数,你可以从该函数返回一个字符串并显示它?

【问题讨论】:

  • 你需要它做什么?你必须展示你的布局页面,你的剃须刀页面模型等等。
  • 我对这个问题有点不确定?我需要使用它在左上角的标题中显示登录的用户名。我不想简单地将模型传递给它,因为有几个控制器和动作应该呈现它。否则我需要所有返回的模型都包含当前登录的用户用户名

标签: asp.net .net asp.net-mvc asp.net-core razor-pages


【解决方案1】:

如果您使用的是 Microsoft.AspNet.Identity,则下面的行将在登录后完成工作。

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

【讨论】:

  • 我怕不是:(
  • 我正在运行 linux,并且它的设置已被证明是疯狂的
【解决方案2】:

你可以尝试使用ajax调用action获取用户名,并添加到html中:

<div id="username">

</div>
@section scripts
{

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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2019-01-30
    • 2019-06-21
    • 2020-05-22
    • 2020-07-13
    • 1970-01-01
    • 2020-08-27
    • 2019-08-27
    • 2020-01-12
    相关资源
    最近更新 更多