首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >用MVC6管理用户

用MVC6管理用户
EN

Stack Overflow用户
提问于 2016-03-22 19:18:00
回答 2查看 277关注 0票数 0

我在努力找出我错在哪里。

我在Startup.cs配置函数中创建了一个管理角色。我添加了一个简单的网页,它可以正常工作,并显示用户列表。

代码语言:javascript
复制
@model IEnumerable<MyProject.ViewModels.Account.UserIndexViewModel>

@{
    ViewData["Title"] = "UsersList";
}

<h2>Users List</h2>

<p>
    <a asp-action="Create">Create New</a>
</p>
<table class="table">
    <tr>
        <th>
            @Html.DisplayNameFor(model => model.UserName)
        </th>
        <th>
            @Html.DisplayNameFor(model => model.Email)
        </th>
        <th></th>
    </tr>

@foreach (var item in Model) {
    <tr>
        <td>
            @Html.DisplayFor(modelItem => item.UserName)
        </td>
        <td>
            @Html.DisplayFor(modelItem => item.Email)
        </td>
        <td>
            <a asp-action="UserDetails" asp-route-id="@item.UserName">Details</a> |
        </td>
    </tr>
}
</table>

当我试图获取用户的详细信息时,cshtml页面正确地生成地址帐户/ UserDetails /NameSurname,并调用AccountController.cs中的AccountController.cs函数:

代码语言:javascript
复制
[HttpGet]
[Authorize(Roles = "admin")]
public IActionResult UserDetails(string userName)
{
    return View();
}

问题是userName不是一个字符串。我试图将参数定义为object,但在调试中看不到是哪种对象。

EN

回答 2

Stack Overflow用户

发布于 2016-03-22 23:38:39

我找到了解决这个问题的方法,也许不是最优雅的。我没有使用新的asp-action关键字进行调用,而是使用了老式的@Html.ActionLink:

代码语言:javascript
复制
@Html.ActionLink("Details", "UserDetails", "Account", routeValues: new { userName = item.userName })

这样,就可以正确地调用AccountController中的AccountController函数,并将参数正确地路由到函数中。

票数 0
EN

Stack Overflow用户

发布于 2016-04-03 18:33:57

第一件事:

问题是userName不是一个字符串。我试图将参数定义为object,但在调试中看不到是哪种对象。

这是因为您使用userName作为操作参数,并且可能在id中使用默认路由,因此默认id没有映射到userName

你有三个选择:

  • 将动作参数更改为id -> public IActionResult UserDetails(string id)
  • 或使用userName在Startup.cs中添加新路由 App.UseMvc(路由=> { routes.MapRoute(名称:"userdetails",模板:"Account/UserDetails/{userName?}",默认值:新的{controller=“帐户”,action="UserDetails“});routes.MapRoute(名称:”默认“,模板:"{controller=Home}/{action=Index}/{id?}");};
  • 或者使用像Account/UserDetails?userName=xxx这样的链接而不是Account/UserDetails/NameSurname

在我看来,1选项是一个很好的实践,因为默认路由在您的场景中已经足够了,只有当它们是真正必要的时候,才应该添加新的路由。

第二件事:

你有建筑:

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/36163274

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档