我目前正在学习。NET核心,我正试图在ASP.NET核心MVC 3.1中使用身份框架进行用户管理。在< code >控制器中,我有一个< code > RoleManagerController ,带有< code>EditRole GET和POST,如下所示:
[HttpGet]
public async Task<IActionResult> EditRole(string roleId)
{
ViewBag.roleId = roleId;
var role = await _roleManager.FindByIdAsync(roleId);
if (role == null)
{
ViewBag.ErrorMessage = $"Role with RoleID = {roleId} doest not exists.";
return NotFound();
}
// create new roleModel
var roleModel = new EditRoleViewModel
{
RoleId = role.Id,
RoleName = role.Name
};
// retrieve all users based on current role
foreach (var user in _userManager.Users.ToList())
{
if (await _userManager.IsInRoleAsync(user, role.Name))
{
roleModel.Users.Add(user.UserName);
}
}
return View(roleModel);
}
[HttpPost]
public async Task<IActionResult> EditRole(EditRoleViewModel roleModel)
{
var role = await _roleManager.FindByIdAsync(roleModel.RoleId);
if (role == null)
{
ViewBag.ErrorMessage = $"Role with RoleId = {roleModel.RoleId} does not exists.";
return NotFound();
}
else
{
role.Name = roleModel.RoleName;
// update the role
var updateStatus = await _roleManager.UpdateAsync(role);
// check while updating is succeed or not
if (updateStatus.Succeeded)
{
return RedirectToAction("Index");
}
foreach (var error in updateStatus.Errors)
{
ModelState.AddModelError("updating failed", error.Description);
}
}
return View(roleModel);
}
基于EditRole
GET,我在Views/RoleManager
文件夹中创建了一个名为EditRole.cshtml
的视图,如下所示:
@model EditRoleViewModel
@{
ViewData["Title"] = "Edit Role";
}
<h4>Edit Role</h4><br />
<form class="" method="post">
<div asp-validation-summary="All" class="text-danger"></div>
<div class="form-group">
<label asp-for="RoleId" class="col-sm-2 col-form-label"></label>
<div class="col-sm-10">
<input asp-for="RoleId" class="form-control" disabled/>
</div>
</div>
<div class="form-group">
<label asp-for="RoleName" class="col-sm-2 col-form-label"></label>
<div class="col-sm-10">
<input asp-for="RoleName" class="form-control"/>
<span asp-validation-for="RoleName" class="text-danger"></span>
</div>
</div>
<div class="form-group">
<div class="col-sm-10">
<button type="submit" class="btn btn-primary">Update</button>
<a asp-action="Index" class="btn btn-secondary">Cancel</a>
</div>
</div>
</form>
这是我在“启动”
中配置的内容.cs
app.UseEndpoints(endpoints =>
{
endpoints.MapControllerRoute(
name: "default",
pattern: "{controller=Home}/{action=Index}/{id?}");
endpoints.MapRazorPages();
});
但是当我尝试编辑角色并使用角色id访问路线时,页面显示< code >没有找到该网址的网页。。我错过了什么吗?
只是一会儿,我决定检查所有与问题路径相关的脚本,我意识到我在索引中的编辑按钮中提供的标记助手。链接到路由的cshtml被设置为asp路由id=@role。Id将不起作用,然后我尝试将其更改为asp route roleId=@role。Id,roleId是我在RoleManager ViewModel中定义的。现在它运行良好。
问题可能是您没有指定区域!
如果将此部分放入“单独区域”中,则必须在启动时定义一个新路由.cs相同:
routes.MapRoute(
name: "areas",
template: "{area:exists}/{controller=Home}/{action=Index}/{id?}"
);
本文向大家介绍Asp.net MVC定义短网址的方法,包括了Asp.net MVC定义短网址的方法的使用技巧和注意事项,需要的朋友参考一下 在MVC的逻辑代码里,Controller和Action是必须的,但是在网址里,并不需要完全体现Controller和Action。比如我们经常希望看到http://localhost/About而不是http://localhost/Home/About。
在 ASP.NET Core-5 Web API 中,我有: appsettings.json: launchSettings.json: 这是We API的启动类,我在其中调用了扩展 启动: 我得到了这个错误: 找不到此本地主机页 未找到网址的网页:https://localhost:44358/ 如何解决此错误? 谢谢
在ASP.NET MVC5中,您可以抛出一个带有HTTP代码的HttpException,这将设置如下所示的响应: ASP.NET核心中不存在。等价代码是什么?
我刚刚开始使用CoreNLP版本3.6.0。我已经从这个网站下载了这个版本。使用命令行管道,我已经能够执行标准管道注释器,但是truecase注释器遇到了一个问题: 这是终端输出的副本: 有什么想法吗?
.NET核心和ASP.NET核心到底有什么区别?
问题内容: 我在不同的机器上使用Selenium来自动化MVC Web应用程序的测试。 我的问题是我无法获取每台计算机的基本URL。 我可以使用以下代码获取当前网址: 但这对我需要导航到其他页面没有帮助。 理想情况下,我可以使用以下内容导航到不同的页面: 我正在使用的可能的解决方法是: 有没有更好的方法可以做到这一点? 问题答案: 解决此问题的最佳方法是创建URL实例。 这是因为.NET中的 类已