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

ASP.NET Core 2.0中Url.Action返回空字符串问题求助

解决方案排查指南

嘿,我之前在ASP.NET Core 2.0项目里也碰到过Url.Action返回空字符串的情况,折腾了好一阵才解决,给你几个靠谱的排查方向:

  • 核对控制器与动作方法的拼写和配置
    首先得确认你的控制器类是KalenderController(注意你代码里写的Kalende...是不是截断了,少了末尾的r?这很容易写错),而且EventsRead方法是公开的,最好显式加上[HttpGet]特性(虽然GET是默认行为,但显式声明能避免意外):

    public class KalenderController : Controller
    {
        [HttpGet]
        public IActionResult EventsRead()
        {
            // 这里写你的业务逻辑,返回JSON数据
            return Json(new { message = "请求成功" });
        }
    }
    
  • 确认视图上下文的正确性
    确保Kalender.cshtml是KalenderController对应的视图(放在Views/Kalender/目录下),如果是共享视图或者跨控制器使用,一定要完整指定控制器名称:

    var myurl = '@Url.Action("EventsRead", "Kalender")';
    

    如果你的控制器在某个**区域(Area)**下,还要加上区域参数:

    var myurl = '@Url.Action("EventsRead", "Kalender", new { area = "YourAreaName" })';
    
  • 检查路由配置是否正常
    打开Startup.cs的Configure方法,确认默认路由模板包含控制器和动作的占位符,ASP.NET Core 2.0的默认路由应该是这样的:

    app.UseMvc(routes =>
    {
        routes.MapRoute(
            name: "default",
            template: "{controller=Home}/{action=Index}/{id?}");
    });
    

    如果你用了属性路由,记得在EventsRead方法上加上对应的路由特性,比如:

    [Route("Kalender/EventsRead")]
    [HttpGet]
    public IActionResult EventsRead()
    {
        // ...
    }
    
  • 快速调试验证
    可以直接在视图里输出@Url.Action("EventsRead", "Kalender"),看看页面渲染后是不是空字符串;或者在浏览器控制台打印myurl的值,确认问题出在Url生成还是后续逻辑。另外,直接在浏览器地址栏访问/Kalender/EventsRead,如果能正常返回JSON,说明控制器动作没问题,问题大概率在视图的Url生成环节。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.25 06:34:14