C# 和 ASP.NET MVC 默认控制器,用于部分 Vue 单页应用程序



我的ASP的一部分。. NET MVC应用程序使用Vue和Vue路由。

的例子:

/account <-- is from AccountController
/account/Extra <-- if from vue-router.

每当我在我的浏览器/account/extra中输入url时,我得到一个"页面无法找到"的错误。这是正确的,因为ASP。. NET MVC只知道/account。但这对我来说是个问题。

我路由:

app.UseEndpoints(endpoints =>
{
endpoints.MapControllerRoute(
name: "default",
pattern: "{controller=Home}/{action=Index}/{id?}",
new { controller = "Home", action = "Index" });
endpoints.MapControllerRoute(
name: "api",
pattern: "api/{controller=Home}/{action=Index}/{id?}",
);
endpoints.MapRazorPages();
});

我在stackoverflow上没有找到任何线索,谷歌搜索也没有让我走远。也许我搜索了错误的关键字?

不管怎样,有人有这方面的经验吗?

要启用客户端路由,可以配置一条回退路径,将任何未解析的服务器端路由传递给客户端应用。

在Startup类的Configure方法中,可以添加

app.UseDefaultFiles();
app.UseStaticFiles();
app.UseRouting();
app.UseEndpoints(endpoints =>
{
endpoints.MapControllers();
endpoints.MapFallbackToFile("/index.html");
});

尝试使用属性路由

[Route("[controller]/[action]")]
[Route("[controller]/extra/[action]")]
public  class AccountController : Controller
{
[Route("~/[controller]")]
[Route("~/[controller]/extra")]
public IActionResult Index () {} //your home page for Account Controller
[Route("{id}")]
public IActionResult MyAction (int id) {}
}

最新更新