我有一个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
获取值并传递给partialview,我发现它工作的唯一方法是使用tempdata,但我不想沿着那条路走下去。
---------------------------代码更新------------------ ----
在索引视图中,我按要求添加了以下内容:
@model System.Collections.Generic.List<string>
@{Html.Partial("Test", Model);}
在partialview中,我有以下内容:
@model System.Collections.Generic.IEnumerable<string>
<ul>
@foreach (var item in Model)
{
<li>@item</li>
}
</ul>
现在导致以下错误:
Message =对象引用未设置为对象的实例。由@foreach(模型中的var项)
引起的答案 0 :(得分:1)
你不远处,你只需要告诉你想要什么类型的模型,例如。
@model System.Collections.Generic.List<string>
<ul>
@foreach (var item in Model)
{
<li>@item</li>
}
</ul>
<强>更新强>
查看代码时,您似乎对渲染视图与实际调用控制器操作的区别感到困惑。当您调用Html.RenderPartial
时,您要求MVC直接呈现该特定视图,而不是调用控制器上的操作。 RenderPartial
期望第二个参数是该视图的模型(如果适用) - 您的视图期望List<string>
但您传入“Home”这是一个字符串,这就是您收到错误的原因沿着这条线:
传递到字典中的模型项是'System.String'类型,但是这个字典需要一个类型为'System.Collections.Generic.List`1 [System.String]'的模型项
您需要做的是实际调用操作并渲染结果视图,例如。
@{ Html.RenderAction("Test", "Home"); }
答案 1 :(得分:0)
在局部视图的顶部定义
@model System.Collections.Generic.List<string>
在您的视图中渲染部分视图添加
@{Html.Partial("Test", Model);}