在MVC中获取要在View中使用的UserId

Car*_*itz 3 asp.net asp.net-mvc

我的MVC 5网络应用程序中存在以下问题。我使用数据库优先方法和实体框架创建了一个表[accountlist],该表对from [UserId][Id]列具有外键关系[AspNetUsers]。现在,相关accountlist.cshtml内容包含一个下拉菜单。我也尝试过,@Html.HiddenFor(model => model.UserId, new { @Value = HttpContext.Current.User.Identity.Name})但问题是我需要正确的用户名而不是用户名(我不希望[UserName]from [AspNetUsers]是主键)。

不幸的是,HttpContext.Current.User.Identity.GetUserId()如该解决方案中所建议的那样,Identity不包含GetUserId()的定义。

有人有解决方案吗?

提前致谢!

Chr*_*att 5

@ stephen.vakil是正确的。您需要导入名称空间。具体来说,您需要添加:

@using Microsoft.AspNet.Identity
@model Namespace.To.Foo
Run Code Online (Sandbox Code Playgroud)

或者,如果您想更频繁地执行此操作,或者只是不想在视图中包括名称空间,则可以Web.configViews项目的文件夹中进行编辑,然后在其中添加它:

<?xml version="1.0"?>
<configuration>
  ...
  <system.web.webPages.razor>
    ...
    <pages pageBaseType="System.Web.Mvc.WebViewPage">
      <namespaces>
        <add namespace="System.Web.Mvc" />
        <add namespace="System.Web.Mvc.Ajax" />
        <add namespace="System.Web.Mvc.Html" />
        <add namespace="System.Web.Optimization" />
        <add namespace="System.Web.Routing" />
        <add namespace="Microsoft.AspNet.Identity" />
Run Code Online (Sandbox Code Playgroud)

那里的任何名称空间都将自动提供给每个视图。