C# .NET Core RedirectToAction未重定向
我有这个代码,我想删除一个用户,然后重定向到索引页面。 同一个return语句已经在其他方法中使用,但它在这个方法中不起作用。。。 当我使用调试模式时,会调用该方法,但不会重定向C# .NET Core RedirectToAction未重定向,c#,asp.net-mvc,asp.net-core,asp.net-web-api,asp.net-core-webapi,C#,Asp.net Mvc,Asp.net Core,Asp.net Web Api,Asp.net Core Webapi,我有这个代码,我想删除一个用户,然后重定向到索引页面。 同一个return语句已经在其他方法中使用,但它在这个方法中不起作用。。。 当我使用调试模式时,会调用该方法,但不会重定向 [HttpDelete] [Authorize] public async Task<IActionResult> RemoveUser() { //var packages = await packageService.GetPackagesCreatedByUserAsync(User.GetU
[HttpDelete]
[Authorize]
public async Task<IActionResult> RemoveUser()
{
//var packages = await packageService.GetPackagesCreatedByUserAsync(User.GetUserId());
//if (packages.Any(p => p.PackageSubscribers.Count > 0))
// return Forbid();
//userService.Logout(User.GetUserId(), HttpContext);
//await userService.RemoveUser(User.GetUserId());
return RedirectToAction(nameof(HomeController.Index), "Home");
}
[HttpDelete]
[授权]
公共异步任务RemoveUser()
{
//var packages=await packageService.GetPackagesCreatedByUserAsync(User.GetUserId());
//if(packages.Any(p=>p.packagessubscribers.Count>0))
//返回禁止();
//userService.Logout(User.GetUserId(),HttpContext);
//等待userService.RemoveUser(User.GetUserId());
返回重定向到操作(nameof(HomeController.Index),“Home”);
}
[HttpDelete]
[授权]
公共异步任务RemoveUser()
{
返回重定向到操作(“索引”、“主页”);
}
您必须遵循此语法
[HttpDelete]
[Authorize]
public async Task<IActionResult> RemoveUser()
{
//var packages = await packageService.GetPackagesCreatedByUserAsync(User.GetUserId());
//if (packages.Any(p => p.PackageSubscribers.Count > 0))
// return Forbid();
//userService.Logout(User.GetUserId(), HttpContext);
//await userService.RemoveUser(User.GetUserId());
return RedirectToAction(nameof(HomeController.Index), "Home");
}
RedirectToActionResult("ActionName", "ControllerName", some_options);
Microsoft文档中的关键字名称
[HttpDelete]
[Authorize]
public async Task<IActionResult> RemoveUser()
{
//var packages = await packageService.GetPackagesCreatedByUserAsync(User.GetUserId());
//if (packages.Any(p => p.PackageSubscribers.Count > 0))
// return Forbid();
//userService.Logout(User.GetUserId(), HttpContext);
//await userService.RemoveUser(User.GetUserId());
return RedirectToAction(nameof(HomeController.Index), "Home");
}
使用nameof代替字符串。字符串文字或常量
匹配包含方法的参数的名称或名称
包含类型的属性的参数用作
方法
[HttpDelete]
[Authorize]
public async Task<IActionResult> RemoveUser()
{
//var packages = await packageService.GetPackagesCreatedByUserAsync(User.GetUserId());
//if (packages.Any(p => p.PackageSubscribers.Count > 0))
// return Forbid();
//userService.Logout(User.GetUserId(), HttpContext);
//await userService.RemoveUser(User.GetUserId());
return RedirectToAction(nameof(HomeController.Index), "Home");
}
例如:
[HttpDelete]
[Authorize]
public async Task<IActionResult> RemoveUser()
{
//var packages = await packageService.GetPackagesCreatedByUserAsync(User.GetUserId());
//if (packages.Any(p => p.PackageSubscribers.Count > 0))
// return Forbid();
//userService.Logout(User.GetUserId(), HttpContext);
//await userService.RemoveUser(User.GetUserId());
return RedirectToAction(nameof(HomeController.Index), "Home");
}
而不是像这样使用神奇的字符串
[HttpDelete]
[Authorize]
public async Task<IActionResult> RemoveUser()
{
//var packages = await packageService.GetPackagesCreatedByUserAsync(User.GetUserId());
//if (packages.Any(p => p.PackageSubscribers.Count > 0))
// return Forbid();
//userService.Logout(User.GetUserId(), HttpContext);
//await userService.RemoveUser(User.GetUserId());
return RedirectToAction(nameof(HomeController.Index), "Home");
}
public Book(string title)
{
// Violates rule CA1507
Title = title ?? throw new ArgumentNullException("title", "All books must have a title.");
}
我们使用
[HttpDelete]
[Authorize]
public async Task<IActionResult> RemoveUser()
{
//var packages = await packageService.GetPackagesCreatedByUserAsync(User.GetUserId());
//if (packages.Any(p => p.PackageSubscribers.Count > 0))
// return Forbid();
//userService.Logout(User.GetUserId(), HttpContext);
//await userService.RemoveUser(User.GetUserId());
return RedirectToAction(nameof(HomeController.Index), "Home");
}
public Book(string title)
{
// Resolves rule CA1507 violation
Title = title ?? throw new ArgumentNullException(nameof(title), "All books must have a title.");
}
或在webapi中使用
[HttpDelete]
[Authorize]
public async Task<IActionResult> RemoveUser()
{
//var packages = await packageService.GetPackagesCreatedByUserAsync(User.GetUserId());
//if (packages.Any(p => p.PackageSubscribers.Count > 0))
// return Forbid();
//userService.Logout(User.GetUserId(), HttpContext);
//await userService.RemoveUser(User.GetUserId());
return RedirectToAction(nameof(HomeController.Index), "Home");
}
// POST: api/Todo
[HttpPost]
public async Task<ActionResult<TodoItem>> PostTodoItem(TodoItem item)
{
_context.TodoItems.Add(item);
await _context.SaveChangesAsync();
return CreatedAtAction(nameof(GetTodoItem), new { id = item.Id }, item);
}
//POST:api/Todo
[HttpPost]
公共异步任务PostTodoItem(TodoItem项)
{
_context.TodoItems.Add(项);
wait_context.SaveChangesAsync();
返回createDataAction(nameof(GetTodoItem),new{id=item.id},item);
}
前面的代码是HTTP POST方法,如
[HttpPost]属性。该方法从中获取待办事项的值
HTTP请求的主体
[HttpDelete]
[Authorize]
public async Task<IActionResult> RemoveUser()
{
//var packages = await packageService.GetPackagesCreatedByUserAsync(User.GetUserId());
//if (packages.Any(p => p.PackageSubscribers.Count > 0))
// return Forbid();
//userService.Logout(User.GetUserId(), HttpContext);
//await userService.RemoveUser(User.GetUserId());
return RedirectToAction(nameof(HomeController.Index), "Home");
}
CreateDataAction方法:
[HttpDelete]
[Authorize]
public async Task<IActionResult> RemoveUser()
{
//var packages = await packageService.GetPackagesCreatedByUserAsync(User.GetUserId());
//if (packages.Any(p => p.PackageSubscribers.Count > 0))
// return Forbid();
//userService.Logout(User.GetUserId(), HttpContext);
//await userService.RemoveUser(User.GetUserId());
return RedirectToAction(nameof(HomeController.Index), "Home");
}
如果成功,则返回HTTP 201状态代码。HTTP 201是
创建新资源的HTTP POST方法的标准响应
在服务器上
[HttpDelete]
[Authorize]
public async Task<IActionResult> RemoveUser()
{
//var packages = await packageService.GetPackagesCreatedByUserAsync(User.GetUserId());
//if (packages.Any(p => p.PackageSubscribers.Count > 0))
// return Forbid();
//userService.Logout(User.GetUserId(), HttpContext);
//await userService.RemoveUser(User.GetUserId());
return RedirectToAction(nameof(HomeController.Index), "Home");
}
将位置标头添加到响应中。位置标题指定
新创建的待办事项的URI。有关详细信息,请参阅
10.2.2 201已创建
[HttpDelete]
[Authorize]
public async Task<IActionResult> RemoveUser()
{
//var packages = await packageService.GetPackagesCreatedByUserAsync(User.GetUserId());
//if (packages.Any(p => p.PackageSubscribers.Count > 0))
// return Forbid();
//userService.Logout(User.GetUserId(), HttpContext);
//await userService.RemoveUser(User.GetUserId());
return RedirectToAction(nameof(HomeController.Index), "Home");
}
引用GetTodoItem操作来创建位置头的URI。C#nameof关键字用于避免对操作进行硬编码
CreateDataAction调用中的名称。
[HttpDelete]
[Authorize]
public async Task<IActionResult> RemoveUser()
{
//var packages = await packageService.GetPackagesCreatedByUserAsync(User.GetUserId());
//if (packages.Any(p => p.PackageSubscribers.Count > 0))
// return Forbid();
//userService.Logout(User.GetUserId(), HttpContext);
//await userService.RemoveUser(User.GetUserId());
return RedirectToAction(nameof(HomeController.Index), "Home");
}
RedirectToActionResult(“ActionName”、“ControllerName”、null)代码>遵循此语法。