Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/asp.net/36.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 从_layout.cshtml中的数据库加载数据_C#_Asp.net_Asp.net Mvc_Asp.net Mvc 4 - Fatal编程技术网

C# 从_layout.cshtml中的数据库加载数据

C# 从_layout.cshtml中的数据库加载数据,c#,asp.net,asp.net-mvc,asp.net-mvc-4,C#,Asp.net,Asp.net Mvc,Asp.net Mvc 4,我正在使用ASP.NETMVC4创建一个web应用程序 我想在所有页面上显示用户的昵称,因此必须将其加载到\u layout.cshtml中 请注意,我正在手动存储用户的昵称。(在我自己的数据库和表中。) 我可以通过Membership.GetUser().UserName添加用户的用户名,但我想从数据库加载他的昵称,并在\u layout.cshtml中显示它 如何做到这一点?让我为您提供一个简单的解决方案: 在控制器中写入操作(我的是CommonController): 在布局中的任意位置放

我正在使用ASP.NETMVC4创建一个web应用程序

我想在所有页面上显示用户的昵称,因此必须将其加载到
\u layout.cshtml

请注意,我正在手动存储用户的昵称。(在我自己的数据库和表中。)

我可以通过
Membership.GetUser().UserName
添加用户的用户名,但我想从数据库加载他的昵称,并在
\u layout.cshtml
中显示它


如何做到这一点?

让我为您提供一个简单的解决方案: 在控制器中写入操作(我的是CommonController):

在布局中的任意位置放置以下行:

         nickname = @{Html.RenderAction("NickName", "Common");}
完了

感谢@SergRogovtsev推荐:

       nickname = @Html.Action("NickName", "Common")
第一个问题: 您正在使用实体框架吗? 您可以使用EF或ADO在_布局中使用局部视图。 若您的意思是不能使用实体框架访问aspnet_成员资格表,那个么您应该用另一种方式提问


通过提供一些代码示例,让我进一步了解您的问题。

我建议您在登录时,将用户名存储在会话变量中(这是通过访问会话对象来完成的,该对象实现了一种键=值对体系结构,允许您随意存储和检索数据)。必须对每个加载的页面进行数据库调用是对性能的拖累,会话中的一个昵称字符串变量不会占用服务器上那么多空间


至于加载变量,您可以使用Vahid发布的代码,但如果您的站点还处于起步阶段,我建议您花额外的时间学习和实现实体框架。它更干净、更简单,而且微软正朝着这个方向推动数据连接管理。

我使用了Creoste先生和Vahid先生的答案

我在一个会话中保存昵称(正如_Cresotoe先生所说),如果没有这样的会话(例如,如果用户勾选了“记住我”复选框,并且在多次访问之后访问),我将使用
RenderAction
创建该会话。(正如瓦希德所说)


谢谢你们

不,我没有使用实体框架。我正在通过
SqlConnection
s连接到数据库。此外,我也没有尝试访问
aspnet\u成员资格表或任何asp.net表。我说,我在自己的表中存储昵称。@VahidHassani您考虑过
RenderAction
的性能影响吗?@SergRogovtsev您是对的!在我的解决方案中没有考虑性能,但它是简单性和性能之间的折衷。在示例中,您没有关闭
SqlConnection
。最好把它关上!Html.Action和Html.RenderAction之间有什么区别?请查看中详细介绍的方法。定义“更简单”。当然,您可以在layour代码中访问数据库,但这违背了MVC的理念。我同意,但对于这样简单的东西来说,它有太多的工作:)乍一看似乎很简单。一旦你考虑到所有的影响,它就不再那么简单了。此外,大部分工作已经完成。
       nickname = @Html.Action("NickName", "Common")