如果我想在html属性中使用多个if语句,我可能会这样做:
<input type="button" value="Bad, the title has a lot of excess spacing" title="@if(SomeModel.condOne) {
<text>this</text>
}
@if (SomeModel.CondTwo)
{
<text> is</text>
}
@if (SomeModel.CondThree)
{
<text> a title</text>
}
" />
但是这会产生许多需要截断的空白空间。所以这有效:
<input type="button" value="Good, the title is condenced" title="@if(SomeModel.condOne) {<text>this</text>}@if (SomeModel.CondTwo){<text> is</text>}@if (SomeModel.CondThree){<text> a title</text>}" />
同样的原则可以应用于具有多个类的元素(例如class =“oddrow class1” - &gt; class =“evenrow class2”)
但如果这是一个很长的路线,那可能很难理解。如果您触摸括号或Ctrl-K,Ctrl-D(任何下一个开发人员可能会这样做),visual studio都会习惯将该语句分成多行。
是否有更好或更全面的方法在MVC剃须刀的行中实现多个属性条件?
答案 0 :(得分:0)
我建议创建一个小助手方法,返回所需的文本。
你必须传递它SomeModel
并在该方法中检查你的状况,这样你就可以看到更好的东西并且更容易维护。
例如:
public static class HtmlHelpers
{
public static string FetchTitle(this HtmlHelper helper, SomeModel model)
{
//Your logic here.
}
}
您可以在Jon Galloway's blog上阅读有关Html Helper方法的所有信息。
这就是我学会如何使用它们的地方。
答案 1 :(得分:0)
为什么不这样做:
title="@if(SomeModel.condOne) { <text>this</text> }
@if (SomeModel.CondTwo) { <text> is</text> }
@if (SomeModel.CondThree) { <text> a title</text> }
" />
如果您使用相同的逻辑,Helper是有意义的,特别是假设相同的模型,但您可能还想考虑使用Func<>
表达式或Action<>
表达式的帮助程序。这样,它就不会绑定到一个模型。