我需要根据用户选择在 MVC View (*.cshtml) 上动态显示字符串/ bool 对的名称和值的列表。具体来说,每个列表中字符串和 bool 对的名称和值都不同。还有多个列表可供用户选择。例如:
水果名称:苹果(字符串:字符串)
IsRipen:true(字符串: bool 值)
书名:C#
已售出:假
一种列表类型被定义为一种报告类型。可以通过编程方式从报告中检索列表。
可能的解决方案 1 由于列表中名称和值的数据类型是固定的(字符串、 bool 值),因此一种想法是将集合构建为 MVC 模型,并将该模型传递给 MVC razor View 。问题是如何在 View 上显示名称,
@Html.LabelFor(model => model.Names[0]) //how to display it as 'Fruit Name'
可能的解决方案2 在 ASP.NET Web 表单中,存在可以动态加载的用户控件。 ASP.NET MVC 中有部分 View 。部分 View 可以做我想要的吗?或者有没有更好的解决方案。
我是 MVC 新手,任何理想或示例都会非常感激。
最佳答案
如果我理解正确的话,您想要做的是创建一个部分 View 并使用 Controller 中的操作调用它。
首先,在 Controller 中执行类似的操作
// partial
public ActionResult report(string reportName)
{
return View(reportModel.Name);
}
然后,确保有一个部分 View 与您的报告名称相同。
然后您可以像这样调用局部 View :
@{Html.RenderAction("report", "Home", new{ reportName="report"});}
上面的行会将部分 View Report.cshtml
渲染到父 View 或主布局中。
编辑
好的。所以每个报告都有一个名称值对列表,对吗?
假设,我们可以编写一个操作将该列表传递到您的 View 。
public ActionResult DisplayPairs()
{
NameValueCollection pairs = new System.Collections.Specialized.NameValueCollection();
pairs.Add("Name", "Value");
pairs.Add("Name2", "Value2");
pairs.Add("Name3", "Value3");
pairs.Add("Name4", "Value4");
return View(pairs);
}
然后我们有 DisplayPairs View :
@model System.Collections.Specialized.NameValueCollection
@{
ViewBag.Title = "DisplayPairs";
Layout = "~/Views/Shared/_Layout.cshtml";
}
<h2>DisplayPairs</h2>
<table>
@foreach(string key in Model.AllKeys){
<tr><th>@key</th><td>@Model[key]</td></tr>
}
</table>
显示:
Name Value
Name2 Value2
Name3 Value3
Name4 Value4
希望这有帮助
关于asp.net-mvc - 如何在 ASP.NET MVC 中的 MVC 上动态显示字符串/ bool 对的名称和值的列表,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6844887/