我设法在SO中找到有关遍历ViewBag
对象的问题,但是我的问题是如何使用迭代在其中命名ViewBag
。
但是从头开始。在我的[[Razor View内部,有一个代码,该代码根据传递的ViewBag
:
@if (ViewBag.TermsChecked == "false")
{
<script type="text/javascript">
document.getElementById("termschecked").style.border = "2px solid #E24941";
</script>
}
else if (ViewBag.TermsChecked == "true")
{
<script type="text/javascript">
document.getElementById("termschecked").style.border = "unset";
</script>
}
@if (ViewBag.LoginCaptchaChecked == "false")
{
<script type="text/javascript">
document.getElementById("logincaptchachecked").style.border = "2px solid #E24941";
</script>
}
else if (ViewBag.LoginCaptchaChecked == "true")
{
<script type="text/javascript">
document.getElementById("logincaptchachecked").style.border = "unset";
</script>
}
@if (ViewBag.RegisterCaptchaChecked == "false")
{
<script type="text/javascript">
document.getElementById("registercaptchachecked").style.border = "2px solid #E24941";
</script>
}
else if (ViewBag.RegisterCaptchaChecked == "true")
{
<script type="text/javascript">
document.getElementById("registercaptchachecked").style.border = "unset";
</script>
}
@if (ViewBag.CaptchaChecked == "false")
{
<script type="text/javascript">
document.getElementById("captchachecked").style.border = "2px solid #E24941";
</script>
}
else if (ViewBag.CaptchaChecked == "true")
{
<script type="text/javascript">
document.getElementById("captchachecked").style.border = "unset";
</script>
}
保持它我想通过DRY
ViewBag
名称创建一个循环,但是我不确定如何在循环中将item传递给ViewBag
名称。到目前为止,我已经尝试了2种方法,但是没有用:@{string[] viewbags = new string[] { ViewBag.TermsChecked, ViewBag.LoginCaptchaChecked, ViewBag.RegisterCaptchaChecked, ViewBag.CaptchaChecked };}
@foreach (string item in viewbags)
{
if (item == "false")
{
<script type="text/javascript">
document.getElementById("@item.ToLower()").style.border = "2px solid #E24941";
</script>
}
else if (item == "true")
{
<script type="text/javascript">
document.getElementById("@item.ToLower()").style.border = "unset";
</script>
}
}
和
@{string[] viewbags = new string[] { "TermsChecked", "LoginCaptchaChecked", "RegisterCaptchaChecked", "CaptchaChecked" }} @foreach (string item in viewbags) { @if (ViewBag.item == "false") { <script type="text/javascript"> document.getElementById("@item.ToLower()").style.border = "2px solid #E24941"; </script> } else if (ViewBag.TermsChecked == "true") { <script type="text/javascript"> document.getElementById("@item.ToLower()").style.border = "unset"; </script> } }
两者都没有像应该那样触发任何脚本。
public IActionResult Index()
{
List<Item> items = new List<Item>();
items.Add(new Item { key = "LoginCaptchaChecked", value = "false" });
items.Add(new Item { key = "RegisterCaptchaChecked", value = "true" });
ViewBag.showHidelist = items;
return View();
}
public class Item {
public string key { get; set; }
public string value { get; set; }
}
并且在页面中,您可以使用:]动态设置边框。
@foreach (var item in ViewBag.showHidelist) { if (@item.value=="true") { <script type="text/javascript"> document.getElementById("@item.key.ToLower()").style.border = "2px solid #E24941"; </script> } else { <script type="text/javascript"> document.getElementById("@item.key.ToLower()").style.border = "unset"; </script> } }
for