1

がありActionResults、リスト文字列を に渡したいのですがpartialview、その方法がわかりません。

うまくいけば、私よりもずっと賢い人:-)が解決するのを手伝ってくれるでしょう。

namespace Web.UI.Controllers
public ActionResult Index()
{
    return View();
}

public async Task<ActionResult> Test()
{
    var currentConditions   = await Task.Run(()=> _IGWC.CurrentConditions("194.61.173.5").FirstOrDefault());
    var weatherAstronomy    = await Task.Run(()=> _IGWC.WeatherAstronomy("194.61.173.5").FirstOrDefault());
    var weatherConditions   = await Task.Run(()=> _IGWC.WeatherConditions("194.61.173.5").FirstOrDefault());
    var weatherLocation     = await Task.Run(()=> _IGWL.WeatherSearch("194.61.173.5").FirstOrDefault());

    string test      = currentConditions.feelsLikeC.ToString();
    string test1     = weatherAstronomy.sunRise.ToString();
    string test2     = weatherConditions.maxtempC.ToString();
    string test3     = weatherLocation.DisplayAreaName.ToString();

    List<string> weatherData = new List<string>();
    weatherData.Add(test);
    weatherData.Add(test1);
    weatherData.Add(test2);
    weatherData.Add(test3);

    return PartialView(weatherData);
}

私が持っているパーシャルビューを含む私のインデックスビューでは:

@{Html.Partial("Test","Home");}

そして最後に私のパーシャルビューで、私は以下を使ってみました。

What goes here

@foreach (var item in Model)
{
@item.
}

部分ビューから値を取得してweatherData渡すにはどうすればよいですか。それが機能する唯一の方法はtempdataを使用することですが、そのルートをたどりたくありません。

---------------------------コードの更新------------------- -

インデックス ビューでは、要求に応じて以下を配置しました。

  @model System.Collections.Generic.List<string>

@{Html.Partial("Test", Model);}

部分ビューには次のものがあります。

@model System.Collections.Generic.IEnumerable<string>


<ul>
@foreach (var item in Model)
{
    <li>@item</li>
}
</ul>

これにより、次のエラーが発生します。

Message=オブジェクト参照がオブジェクトのインスタンスに設定されていません。@foreach (モデル内の変数項目) が原因

4

2 に答える 2

1

遠くないので、期待するモデルのタイプをビューに伝える必要があります。

@model System.Collections.Generic.List<string>

<ul>
@foreach (var item in Model)
{
    <li>@item</li>
}
</ul>

アップデート

コードを見ると、ビューのレンダリングと実際のコントローラー アクションの呼び出しの違いが混乱しているようです。呼び出すと、コントローラーでアクションを呼び出すのではなく、 MVC にその特定のビューHtml.RenderPartialを直接レンダリングするように求められます。2番目のパラメーターがそのビューのモデルであると予想されます(該当する場合)-ビューは期待していますが、「ホーム」を渡すことを期待しています。RenderPartialList<string>

ディクショナリに渡されたモデル項目は「System.String」型ですが、このディクショナリには「System.Collections.Generic.List`1[System.String]」型のモデル項目が必要です

あなたがする必要があるのは、実際にアクションを呼び出して結果のビューをレンダリングすることです。

@{ Html.RenderAction("Test", "Home"); }
于 2013-01-23T10:06:46.890 に答える
0

部分ビューの上部で定義します

@model System.Collections.Generic.List<string>

部分ビューをレンダリングしているビューに追加します

@{Html.Partial("Test", Model);}
于 2013-01-23T10:15:43.237 に答える