1

エンティティ フレームワークと WCF サービスを介して SQL サーバー ビューから引き戻されたデータのテーブルを表示する Web ページがあります。

私のSQLサーバービューでは、列の1つが日付フィールドです。ページに時間部分なしで表示するのに苦労しています(時間部分がDBにない場合、読み取りからは、エンティティビューを生成すると時間部分が追加されるDateTimeプロパティであるように見えます.

したがって、基本的に私のモデルには次のものがあります(明らかに、名前はここで嘲笑されています):

モデル

public List<MySqlView> MySqlView { get; set; }

コントローラ

model.MySqlView = MyWCFService.GetMeAlltheData(
                      //pass in some values start date, end date
                  );

したがって、これで、必要なものがすべて正常に返されることがわかり、モデルをビューに渡します。

ビューでテーブルを構築するには、次のことを行っています。

cshtml

<tbody>
            @foreach (var item in Model.MySqlView)
            {
                <tr>
                    <td class="table-data">
                        @Html.DisplayFor(modelItem => item.Date)
                    </td>
                    //More stuff in table close loop

私は試しitem.Date.ToShortDateString()ましたが、それは例外をスローします

テンプレートは、フィールド アクセス、プロパティ アクセス、単一次元の配列インデックス、または単一パラメーターのカスタム インデクサー式でのみ使用できます。

4

2 に答える 2

0

ViewModel クラスを使用してモデルをビューから分離すると、実質的にすべてのインターフェイスの問題が解決されます。MVC を使用すればするほど、MVVmC の方が優れたアプローチであることがわかります。これはその理由の良い例です。モデル自体に厳密に入力する代わりに、 を使用して正しくフォーマットされた日付値を持つ文字列プロパティをビューに提供する ViewModel を作成しますMyDateTimeItem.ToString("MMMM dd, yyyy")

于 2013-02-14T05:03:13.733 に答える
0

次の内容で Views/Shared/DisplayTemplates に DateTime.cshtml を作成できます。

@model DateTime

@Html.Label("", Model.ToShortDateString())
于 2013-02-14T05:07:39.927 に答える