我想知道是否有一种更好的方法来编写此解决方案,而不是在部分视图中编写if else语句,该语句根据从先前视图继承的ViewBag值显示不同的内容。
视图-声明了ReportIdentity视图包。
@model xxx.Areas.CustomReports.Models.YearlyBusinessSummaryViewModel
@{
var reportUrl = Url.Action("GenerateReportFromCache",
"YearlyBusinessSummary", new { area = "CustomReports" });
ViewBag.ReportIdentity = "YBS";
}
部分视图-包含我要替换的if else语句。
if (ViewBag.ReportIdentity == "YBS";)
{
<div>
Tag 1</div>}
else if (ViewBag.ReportIdentity == "CGA")
{
<div>
Tag 2
</div>
}else if (ViewBag.ReportIdentity == "YTD")
{
<div>
Tag3
</div>
没有错误
答案 0 :(得分:0)
您可以使用Switch / Case:
switch(ViewBag.ReportIdentity)
{
case 'option 1':
//do something
break;
case 'option 2':
//do something
break;
case 'option 3':
//do something
break;
}default:
//Last option, if does not enter on case
答案 1 :(得分:0)
提供局部视图模型,而不是使用ViewBag,然后您可以根据提供模型的方式来更改行为。
@model xxx.ReportIdentityModel
<div>
Model.DisplayName
</div>
public class xxx.YBSReport : ReportIdentityModel
{
public DisplayName { get { return "Tag 1"; } }
}