每次我在viewmodel中获取Context的null异常:
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" />
所以我得到了Context的NullReferenceException,我也检查了Locals Context,我发现Context的值为 null 。拜托,你知道我错过了吗?
顺便说一句,我也尝试修改dotvvmStartup.cs中的代码,就像你在下面看到的那样但是我得到了与Context相同的null异常结果:
config.RouteTable.Add("Default", "", "Views/index.dothtml", null);
config.RouteTable.Add("TestPage", "testpage/{Id?}", "Views/testpage.dothtml", new { Id = 2 });
答案 0 :(得分:0)
您似乎正在尝试访问构造函数中尚未提供的Context
属性。
目前,推荐的方法是覆盖Init
方法并读取此方法中的参数值。
public override Task Init()
{
TestId = Convert.ToInt32(Context.Parameters["Id"]);
return base.Init();
}
在即将发布的DotVVM 1.1版本中,我们将为您提供参数绑定 可以只在viewmodel中声明一个属性并使用属性 将它绑定到路由或查询字符串中的参数,如下所示:
[FromRoute("Id")] public int TestId { get; set; }