0

每次我在视图模型中获得 Context 的空异常时:

 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 中的代码,如下所示,但我得到了相同的结果,但上下文为空异常:

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

1 回答 1

0

您似乎正在尝试访问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; }
于 2016-09-16T14:37:30.027 回答