Dotvvm:路径参数获取Context的null异常

时间:2016-09-14 17:58:16

标签: c# dotvvm

每次我在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 });

1 个答案:

答案 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; }