0

ビューモデルで 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 });
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 に答える