5

私はこのような部分メソッドを書きました:

public ActionResult _StatePartial()
        {
            ViewBag.MyData = new string[] { "110", "24500" };
            return View();
        }

_StatePartialそして、ページ内のビューをレンダリングし_Layoutます:

@Html.Partial("_StatePartial")

これは私の部分的なビューコードです:

@{
    string[] Data = (string[])ViewBag.MyData;
}
<div id="UserState">
        Reputation: @Html.ActionLink(Data[0], "Reputation", "Profile") | 
        Cash: @Html.ActionLink(Data[1], "Index", "FinancialAccount")
</div>

しかし、このプロジェクトを実行すると、_StatePartialメソッドは呼び出されず、ViewBag常に null になります。

Server Error in '/' Application.
Object reference not set to an instance of an object. 

これらのパラメーターは私のモデル フィールドではなく、Web サービス メソッドを呼び出して計算することに注意してください。しかし、私はこれらの値を私の質問に常に設定しています。

これには何ができますか?パラメータを部分ビューに渡す方法はありますか? ありがとう。

4

2 に答える 2

9

あなたの電話:

@Html.Partial("_StatePartial")

ビューをレンダリングしますが、アクションは呼び出されません。これは、親ページのアクションですべてのビューデータを表示している場合にのみ使用します。あなたの場合、これを使用する必要があります:

@Html.Action("_StatePartial")

これにより、最初にアクションが呼び出され、ビューが取得されて実行されます。

于 2012-11-20T08:57:45.793 に答える
1

また:

return View();

レイアウトでビューを返すためのものです。必要なもの:

return PartialView();

そして、これを使用することをお勧めします:

public ActionResult StatePartial()
{
    ViewBag.MyData = new string[] { "110", "24500" };
    return View("_StatePartial");
}

ただし、強く型付けされたモデルを使用することをお勧めします。ViewBag

于 2012-11-20T09:03:16.250 に答える