場合によっては、タイトル属性のみを表示したい。条件が満たされていないときに表示したくありません。これで、空のツールチップが表示されます。条件が失敗したときにツールチップが必要ありません。
少し掃除した
<tr class=title="@(item.Cancelled ? "Cancelled" : item.Confirmed ? isBlocked? "blocked date": **no title attribute here** :"Confirm needed") ">
場合によっては、タイトル属性のみを表示したい。条件が満たされていないときに表示したくありません。これで、空のツールチップが表示されます。条件が失敗したときにツールチップが必要ありません。
少し掃除した
<tr class=title="@(item.Cancelled ? "Cancelled" : item.Confirmed ? isBlocked? "blocked date": **no title attribute here** :"Confirm needed") ">
あなたはいつでも次のポルノを実行することができます:
<tr @Html.Raw(item.Cancelled ? "title=\"Cancelled\"" : item.Confirmed ? isBlocked ? "title=\"blocked date\"": "" : "title=\"Confirm needed\"")>
ただし、このtd
要素を生成するカスタムヘルパーを作成することをお勧めします。
@using (Html.Td(item, isBlocked))
{
<div>some contents for the td</div>
}
このような:
public static class HtmlExtensions
{
private class TdElement : IDisposable
{
private readonly ViewContext _viewContext;
private bool _disposed;
public TdElement(ViewContext viewContext)
{
if (viewContext == null)
{
throw new ArgumentNullException("viewContext");
}
_viewContext = viewContext;
}
public void Dispose()
{
this.Dispose(true);
GC.SuppressFinalize(this);
}
protected virtual void Dispose(bool disposing)
{
if (!this._disposed)
{
_disposed = true;
_viewContext.Writer.Write("</td>");
}
}
}
public static IDisposable Td(this HtmlHelper html, ItemViewModel item, bool isBlocked)
{
var td = new TagBuilder("td");
var title = item.Cancelled
? "Cancelled"
: item.Confirmed
? isBlocked
? "blocked date"
: ""
: "Confirm needed";
if (!string.IsNullOrEmpty(title))
{
td.Attributes["title"] = title;
}
html.ViewContext.Writer.Write(td.ToString(TagRenderMode.StartTag));
var element = new TdElement(html.ViewContext);
return element;
}
}