我從Index.cshtml我的控制器發送資料。然后我想從控制器重定向到檔案夾index.cshtml內的頁面Admin(這兩個是兩個不同的index.cstml檔案)。我添加了檔案層次結構的螢屏截圖。請幫我解決這個問題。
我試過這個,但它不起作用
public IActionResult Login([FromBody] Users user)
{
if (user.UserName.Equals("admin") & user.Password.Equals("admin"))
{
return LocalRedirect("/Admin/Index"); // redirect to index page in Admin folder
}
else
return RedirectToPage("Error");
}
檔案夾結構:

這是啟動頁面
using Microsoft.AspNetCore.Builder;
using Microsoft.AspNetCore.Hosting;
using Microsoft.AspNetCore.Http;
using Microsoft.EntityFrameworkCore;
using Microsoft.Extensions.Configuration;
using Microsoft.Extensions.DependencyInjection;
using Microsoft.Extensions.Hosting;
using PracticalTest.Database;
using System;
using System.Collections.Generic;
using System.Linq;
using System.Threading.Tasks;
namespace PracticalTest.UIs
{
public class Startup
{
public Startup(IConfiguration configuration)
{
Configuration = configuration;
}
public IConfiguration Configuration { get; }
// This method gets called by the runtime. Use this method to add services to the container.
public void ConfigureServices(IServiceCollection services)
{
services.AddRazorPages();
services.AddDbContext<ApplicationDbContext>(options => options.UseSqlServer(Configuration["defaultConnection"]));
services.AddControllers();
}
// This method gets called by the runtime. Use this method to configure the HTTP request pipeline.
public void Configure(IApplicationBuilder app, IWebHostEnvironment env)
{
if (env.IsDevelopment())
{
app.UseDeveloperExceptionPage();
}
else
{
app.UseExceptionHandler("/Error");
// The default HSTS value is 30 days. You may want to change this for production scenarios, see https://aka.ms/aspnetcore-hsts.
app.UseHsts();
}
app.UseHttpsRedirection();
app.UseStaticFiles();
app.UseRouting();
app.UseAuthorization();
app.UseEndpoints(endpoints =>
{
endpoints.MapRazorPages();
endpoints.MapControllers();
});
}
}
}
管理控制器
using Microsoft.AspNetCore.Mvc;
using PracticalTest.Application.Admin;
using PracticalTest.Database;
using System;
using System.Collections.Generic;
using System.Linq;
using System.Threading.Tasks;
namespace PracticalTest.UIs.Controllers
{
[Route("[controller]")]
public class AdminController : Controller
{
private ApplicationDbContext _ctx;
public AdminController(ApplicationDbContext ctx)
{
_ctx = ctx;
}
[HttpGet("Items")]
public IActionResult GetItems() =>Ok( new GetItems(_ctx).Do());
[HttpGet("Users")]
public IActionResult GetUsers() => Ok(new GetUsers(_ctx).Do());
[HttpGet("Items/{id}")]
public IActionResult GetItem(int id) =>Ok(new GetItem(_ctx).Do(id));
[HttpGet("Users/{id}")]
public IActionResult GetUser(int id) => Ok(new GetUser(_ctx).Do(id));
[HttpPost("Items")]
public async Task<IActionResult> CreateItem([FromBody]CreateItem.Requst requst) =>Ok((await new CreateItem(_ctx).Do(requst)));
[HttpPost("Users")]
public async Task<IActionResult> CreateUser([FromBody] CreateUser.Requst requst) => Ok((await new CreateUser(_ctx).Do(requst)));
[HttpDelete("Items/{id}")]
public async Task<IActionResult> DeleteItem(int id) =>Ok((await new DeleteItem(_ctx).Do(id)));
[HttpDelete("Users/{id}")]
public async Task<IActionResult> DeleteUser(int id) => Ok((await new DeleteUser(_ctx).Do(id)));
[HttpPut("Items")]
public async Task<IActionResult> UpdateItem([FromBody]UpdateItem.Request rq) =>Ok((await new UpdateItem(_ctx).Do(rq)));
[HttpPut("Users")]
public async Task<IActionResult> UpdateUser([FromBody] UpdateUser.Request rq) => Ok((await new UpdateUser(_ctx).Do(rq)));
}
}
uj5u.com熱心網友回復:
這個怎么樣?
if (user.UserName.Equals("admin") & user.Password.Equals("admin"))
{
// redirect to index page in Admin folder
return RedirectToPage("Admin/Index");
}
....
uj5u.com熱心網友回復:
如果你想進入一個動作,你可以將動作作為第一個引數傳遞,將控制器作為第二個引數傳遞。
RedirectToAction("Index", "Admin");
如果您只想重定向到頁面本身,您將轉到視圖所在的目錄。如 return View("~/Views/Chats/Index.cshtml");
return View("~/Views/Admin/Index.cshtml");
在上面的代碼中,您可以將引數替換為頁面所在的位置。
轉載請註明出處,本文鏈接:https://www.uj5u.com/caozuo/354062.html
