Dotvvm:路由参数获得空上下文异常

本文关键字:上下文 异常 路由 参数 Dotvvm | 更新日期: 2023-09-27 18:06:57

每次我得到null异常在我的viewmodel上下文:

 var TestId = Convert.ToInt32(Context.Parameters["Id"]);

在dotvvmStartup.cs我有这个代码:

config.RouteTable.Add("Default", "", "Views/index.dothtml");   
config.RouteTable.Add("TestPage", "testpage/{Id?}", "Views/testpage.dothtml");

当我点击index.dothml:

中的路由链接时
<dot:RouteLink RouteName="TestPage" Text="Go!" Param-Id="1" />

所以我得到了NullReferenceException for Context,我也检查了Locals Context,我看到Context有值null。拜托,你知道我错过了什么吗?

顺便说一下,我也尝试修改代码dotvvmStartup.cs,就像你可以看到下面,但我得到了相同的结果与空异常上下文:

config.RouteTable.Add("Default", "", "Views/index.dothtml", null);   
    config.RouteTable.Add("TestPage", "testpage/{Id?}", "Views/testpage.dothtml", new { Id = 2 });

Dotvvm:路由参数获得空上下文异常

似乎您正在尝试访问构造函数中尚未可用的Context属性。

目前,推荐的方法是重写Init方法并读取该方法中的参数值。

public override Task Init() 
{
    TestId = Convert.ToInt32(Context.Parameters["Id"]);
    return base.Init();
}

在即将发布的DotVVM 1.1版本中,我们将在您需要的地方添加参数绑定是否可以在视图模型中声明属性并使用属性来将其绑定到路由或查询字符串中的参数,如下所示:

[FromRoute("Id")]
public int TestId { get; set; }