从剃刀页面调用方法

Posted

技术标签:

【中文标题】从剃刀页面调用方法【英文标题】: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”在任何地方都找不到。

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

【问题讨论】:

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

【讨论】:

以上是关于从剃刀页面调用方法的主要内容,如果未能解决你的问题,请参考以下文章

如何从我的视图的 javascript 访问我的代码隐藏文件中的 JsonResult 变量?剃刀页面。 C#

使用剃须刀页面调用服务器方法而无需重新加载页面

ASP.Net Core - 从 Razor 视图调用静态方法 - 构建失败而不给出错误

从剃刀视图向通过HTTP Post方法接受值的控制器操作提交值

如何将剃刀页面包含在另一个剃刀页面中?

从 JSP 页面调用我的 GWT 后端方法