从剃刀页面调用方法
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 视图调用静态方法 - 构建失败而不给出错误