C# 如何避免函数中的重复dom if(countRefinements>1) { if(细化类型.ToString().ToLowerInvariant()!=“micro”) { //一些功能 } 其他的 { 开关(可枚举。范围(1,17)。包含(countdefinitions)) { 大小写正确: //一些功能 打破 案例错误: //一些功能 打破 打破 } } }
我有这种情况。我需要避免将dom复制到代码中。如果开关中的条件为TRUE,则唯一的更改是添加一个类。如何解决这个问题?引入一个变量来保存CSS类。然后根据您的条件附加到此变量。最后,只渲染一次 以下示例(Razor)仅演示如何根据一个条件呈现“ClassicConditionIsTrue”或“ClassicConditionIsFalse”:C# 如何避免函数中的重复dom if(countRefinements>1) { if(细化类型.ToString().ToLowerInvariant()!=“micro”) { //一些功能 } 其他的 { 开关(可枚举。范围(1,17)。包含(countdefinitions)) { 大小写正确: //一些功能 打破 案例错误: //一些功能 打破 打破 } } },c#,asp.net-mvc,C#,Asp.net Mvc,我有这种情况。我需要避免将dom复制到代码中。如果开关中的条件为TRUE,则唯一的更改是添加一个类。如何解决这个问题?引入一个变量来保存CSS类。然后根据您的条件附加到此变量。最后,只渲染一次 以下示例(Razor)仅演示如何根据一个条件呈现“ClassicConditionIsTrue”或“ClassicConditionIsFalse”: if (countRefinements > 1) { if (refinementType.ToString().ToL
if (countRefinements > 1)
{
if (refinementType.ToString().ToLowerInvariant() != "micro")
{
<div class="refinementContainer refinementmacro">
//some functions
</div>
}
else
{
switch (Enumerable.Range(1, 17).Contains(countRefinements))
{
case true:
<div class="refinementContainer classIfConditionIsTrue refinementmicro">
//some functions
</div>
break;
case false:
<div class="refinementContainer refinement@(refinementType.ToString().ToLowerInvariant())" data-dimension="@(refinementType.ToString().ToLowerInvariant())">
<div class="refinementContainer classIfConditionIsFalse refinementmicro">
//some functions
</div>
break;
</div>
break;
}
}
}
@{
//TODO:处理“宏”,如果为false,则创建外部div
字符串cssClasses=“refinementContainer refinementmicro”;
如果(countRefinements>=1&&countRefinements,您可以使用Razor语法来简化代码。方法是在将其呈现为HTML代码之前检查合适的类名。
参考:
@{
//在cshtml页面的顶部声明此项
var className=“精炼容器”;
if(countRefinements>1&&!string.IsNullOrWhiteSpace(refinementType.ToString())
{
如果(细化类型.ToString().ToLower()!=“micro”)
{
className+=“精炼宏”;
}
else if(countRefinements>=1&&countRefinements为什么你要使用开关(bool)case true case false
而不是if else
?重复dom是什么意思?(视图中没有生成重复的html)另外,为什么可枚举范围(1,x).Contains(y)
而不是y
?这段代码感觉太过工程化,以至于我个人会重新评估其中做出的每一个决定,以确认代码实际上是必要的和有效的。但这需要应用程序和需求的上下文知识。
@{
// TODO: handle "macro", create outer div if false
string cssClasses = "refinementContainer refinementmicro";
if (countRefinements >= 1 && countRefinements <= 17) {
cssClasses += " classIfConditionIsTrue";
}
else {
cssClasses += " classIfConditionIsFalse";
}
}
<div class="@cssClasses">
// some functions
</div>
@{
//declare this on top of your cshtml page
var className = "refinementContainer";
if (countRefinements > 1 && !string.IsNullOrWhiteSpace(refinementType.ToString()))
{
if (refinementType.ToString().ToLower() != "micro")
{
className += " refinementmacro";
}
else if (countRefinements >= 1 && countRefinements <= 17)
{
className += " classIfConditionIsTrue refinementmicro";
}
else
{
className += " classIfConditionIsFalse refinementmicro";
}
}
}
<div class="@(className)">
//some functions
</div>