私はC#とMVCを使用してWebアプリケーションを開発しています。ページの1つに複数の情報が含まれる<tr>
がありますが、この情報は時間の経過とともに更新されます(1ヶ月から6ヶ月)。だから私は情報を含む<tr>
を表示したいだけです。情報はデータベースに保存され、それぞれ<tr>
にはそれ自身の列があります。私が行ったアプローチは、データを読んで、if
の条件をビューに適用することです。条件に基づいてテーブルの行を表示する
だから私はこの8回に持って
@if (!string.IsNullOrEmpty(Model.SomePropertyOne))
{
<tr>
<td>@Html.DisplayNameFor(model => model.SomePropertyOne)</td>
<td>@Html.DisplayFor(model => model.SomePropertyOne)</td>
</tr>
}
@if (!string.IsNullOrEmpty(Model.SomePropertyTwo))
{
<tr>
<td>@Html.DisplayNameFor(model => model.SomePropertyTwo)</td>
<td>@Html.DisplayFor(model => model.SomePropertyTwo)</td>
</tr>
}
...
のようなもの。だから私の質問は、これより良いアプローチがあるのでしょうか、これらのすべての文を使用して私は固執していますか?
@foreach(var prop in Model.GetType().GetProperties().Where(x => x.PropertyType == typeof(string)))
{
var value = prop.GetValue(Model);
if (value != null)
{
<tr>
<td>@prop.Name</td>
<td><input value="@value.ToString()" name="@prop.Name" /></td>
</tr>
}
}
しかし、この場合では、あなたが@Html
ヘルパーを使用することを避ける必要があります。
私はあなたが任意のより詳細な情報
を追加し、2つの行が異なる特性に関連することになっていますか?彼らは両方とも 'model.SomeProperty'を参照しているので – stuartd
@stuartdはい、それらは両方とも異なるプロパティに関連しています – Code
可能な複製http://stackoverflow.com/questions/16814119/how-do-i-conditionally-show-a-field- in-asp-net-mvc-razor –