You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

.NET Framework 4.5如何跨项目/模块映射HomeController

问题描述

现有基于ASP.NET MVC(VB语言、.NET Framework 4.5)的应用程序,原HomeController.vb已转换为HomeController.cs并放置在独立项目/模块中,命名空间为Admin。需要修改原项目的RouteConfig.vb,配置路由以访问新HomeController的Login方法。

原VB控制器代码:

Imports System.Web.Mvc
Namespace Controllers
    Public Class HomeController       
        <AllowAnonymous>
        Function Login() As ActionResult
            If Not User Is Nothing AndAlso User.Identity.IsAuthenticated = True Then
                Return Redirect("/mvc/action/main")
            Else
                Return Redirect("/mvc")
            End If
        End Function      
    End Class
End Namespace

新C#控制器代码:

using System;
using System.Collections.Generic;
using System.Diagnostics;
using System.Globalization;
using System.IO;
using System.Linq;
using System.Reflection;
using System.Runtime.CompilerServices;
using System.Security;
using System.Text;
using System.Threading.Tasks;
using Microsoft.VisualBasic;
using System.Web.Mvc;

namespace Admin
{
    public class HomeController 
    {
        [AllowAnonymous]
        public ActionResult Login()
        {
            if (User != null && User.Identity.IsAuthenticated)
                return Redirect("/mvc/action/main");
            else
                return Redirect("/mvc");
        }
    }
}

原路由配置示例:

routes.MapRoute(
    name:="login",
    url:="login",
    defaults:=New With {.controller = "Home", .action = "Login"}
)
解决方案

因为新的HomeController位于Admin命名空间,而原项目控制器默认在Controllers命名空间,MVC路由需要明确指定命名空间才能定位到正确的控制器,避免同名控制器冲突。修改RouteConfig.vb的路由配置如下:

1. 带命名空间的路由配置

routes.MapRoute(
    name:="login",
    url:="login",
    defaults:=New With {.controller = "Home", .action = "Login"},
    namespaces:=New String() {"Admin"} ' 指定新控制器所在的命名空间
)

2. 关键注意事项

  • 确保包含新C#控制器的项目已被原ASP.NET MVC项目引用,否则路由无法找到目标控制器。
  • 修正新C#控制器的逻辑错误:原代码!User == null是语法逻辑错误,应改为User != null(上述代码示例已修正),否则会导致身份验证判断反向。
  • 如果原项目中仍保留旧的HomeController(Controllers命名空间下),必须通过命名空间区分,否则MVC会因找到多个同名控制器抛出异常。

内容的提问来源于stack exchange,提问作者suryakumar101987

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.29 17:33:02