0

私はこのようなビューを持っています:

@model IEnumerable<PMS.Models.Activity_Contractor>

@{
ViewBag.Title = "Index";
Layout = "~/Views/Shared/_LayoutPageArchitect.cshtml";
  }

 <h2>Index</h2>

 <p>
   @*@Html.ActionLink("Create New", "Create")*@
  </p>
<table>
<tr>
     @*<th>
        @Html.DisplayNameFor(model => model.A_C_ID)
    </th>*@

    <th>
        @Html.DisplayName("ProjectName")
    </th>
    <th>
        @Html.DisplayNameFor(model => model.ProjectActivityMaster.ActivityName)
    </th>
    <th>
        @Html.DisplayNameFor(model => model.ContractorMaster.ContractorName)
    </th>
    <th>
        @Html.DisplayNameFor(model => model.IsActive)
    </th>
  @*  <th>
        @Html.DisplayNameFor(model => model.CreatedBy)
    </th>
    <th>
        @Html.DisplayNameFor(model => model.CreatedON)
    </th>
    <th>
        @Html.DisplayNameFor(model => model.UpdatedBy)
    </th>
    <th>
        @Html.DisplayNameFor(model => model.UpdatedON)
    </th>*@
    <th></th>
</tr>

@foreach (var item in Model) {
<tr>
    @*<td>
        @Html.DisplayFor(modelItem => item.A_C_ID)
    </td>*@
    <td>
        @Html.Label("Project")
    </td>
    <td>
        @Html.DisplayFor(modelItem => item.ProjectActivityMaster.ActivityName)
    </td>
    <td>
        @Html.DisplayFor(modelItem => item.ContractorMaster.ContractorName)
    </td>
    <td>
        @Html.DisplayFor(modelItem => item.IsActive)
    </td>
   @* <td>
        @Html.DisplayFor(modelItem => item.CreatedBy)
    </td>
    <td>
        @Html.DisplayFor(modelItem => item.CreatedON)
    </td>
    <td>
        @Html.DisplayFor(modelItem => item.UpdatedBy)
    </td>
    <td>
        @Html.DisplayFor(modelItem => item.UpdatedON)
    </td>*@
    <td>
        @Html.ActionLink("Edit", "Edit", new { id=item.A_C_ID  }) |
        @Html.ActionLink("Details", "Details", new { id=item.A_C_ID }) |
        @Html.ActionLink("Delete", "Delete", new { id=item.A_C_ID })
    </td>
     </tr>
}

 </table>

私の item.IsActive 値は 1/0 でした。1 の場合は True、ID が 0 の場合は False として表示されます。どうすればそれを行うことができますか?

4

2 に答える 2

1

私の item.IsActive 値は 1/0 でした。1 の場合は True、ID が 0 の場合は False として表示されます。どうすればそれを行うことができますか?

1/0を含むINT

表示できる内容を完全に制御したい場合は、表示テンプレートを使用することをお勧めします。

テンプレートを作成する

まだフォルダーがない場合はDisplayTemplates、フォルダーの下にというフォルダーを作成します。Shared次に、 というファイルを作成します。もちろん、データ型に類似した名前 (例: Int、Boolean など)を除いCustomInt.cshtmlて、任意の名前を選択できます。次に、テンプレートに次のものが必要です。

@model System.Int32

@if (Model == 0)
{
    @:True
}
else if (Model==1) {
    @:False
}

使用方法

次に、表示したいビューでIsActiveこれを行う必要があります:

@Html.DisplayFor(m => m.IsActive, "CustomInt")

テンプレート名を html ヘルパーに指定したことに注意してください。

落とし穴

テンプレートの使用には細心の注意が必要です。は int であるため、およびIsActive以外の値を持つことができます。したがって、値がこれら 2 つ以外の場合、何も出力されません。しかし、それは大きな問題ではありません。別のものを簡単に追加して、エラーなどを出力できるからです。しかし、常にどちらかまたはのどちらかが常にあると確信していると思います。01elseIsActive01

予期しない値をキャッチするように変更されたテンプレート:

@model System.Int32

@if (Model == 0)
{
    @:True
}
else if (Model==1) {
    @:False
}
else {
    @:What is this value? The system was hacked!
}
于 2013-04-12T10:22:14.057 に答える
0

ビューモデルで IsActive を解析して、true または false を返すことができます。

public class Myviewmodel
{
    public string IsActive { get; set; }

}

public class Mymodel
{
    public bool IsActive { get; set; }
}

次に、モデルからビューモデルにマッピングするときに、ブール値を文字列に解析しますか?

ヒント: NBuilder を使ってみてください

于 2013-04-12T10:06:27.260 に答える