2012-01-20 10 views
0

私は、あなたの体重と栄養に関する毎週更新を編集する編集アクションを扱うビューを持っています。特異なモデルを編集することはすべて良いことです。私はフィールドを作成するEditorForを使用しています。編集ビューで追加の読み取り専用ビューデータを表示する方法MVC

私の問題は、先週の結果の読み込み専用のバージョンをガイドとして表示したいのですが、DisplayForを使用して、boolの書式を無効にしてチェックボックスを無効にし、日付を書式設定モデル。 Viewbagにモデルを追加し、@ Html.DisplayFor(x => x.BodyWeight、(myproject.Models.WeeklyReport)ViewBag.LastReport)を使用してアクセスしようとしましたが、送信したモデルのデータが表示されますViewbagのデータではなくビューに割り当てます。モデルの制約/書式設定を損なわずにこの種のデータを表示する最良の方法は何ですか?

ありがとうございました。

ビュー

@model myproject.Models.WeeklyReport 

<h2>Weekly Report - Week 1</h2> 
@using (Html.BeginForm()) 
{ 
    @Html.ValidationSummary(true) 

    <table class="weeklyreport"> 
     <tr> 
      <th>Week</th> 
      <td class="result-bold">Goals</td> 
      <td>Current Week</td> 
     </tr> 
     <tr> 
      <th>Body Weight</th> 
      <td class="result-bold">@Html.DisplayFor(x => x.BodyWeight, (myproject.Models.WeeklyReport)ViewBag.Goals)</td> 
      <td>@Html.EditorFor(model => model.BodyWeight) 
       @Html.ValidationMessageFor(model => model.BodyWeight)</td> 
     </tr> 
     <tr> 
      <th>Diary Reviewed</th> 
      <td class="result-bold">@Html.DisplayFor(x => x.DiaryReviewed, (myproject.Models.WeeklyReport)ViewBag.Goals)</td> 
      <td>@Html.EditorFor(model => model.DiaryReviewed) 
       @Html.ValidationMessageFor(model => model.DiaryReviewed)</td> 
     </tr> 
    </table> 

コントローラ

public ActionResult Edit(int id) 
{ 
    WeeklyReport goal = new WeeklyReport() 
    { 
     BodyWeight = 60, 
     DiaryReviewed = true 
    }; 

    WeeklyReport rpt = new WeeklyReport() 
    { 
     BodyWeight = 68, 
     DiaryReviewed = false 

    }; 
    ViewBag.LastReport = goal; 
    return View(rpt); 
} 

答えて

0

あなたはのviewmodelsまたはpartialViewsを作成して、部分的にviewbagアイテムを渡すことができます。

のviewmodel使用例

public class WeeklyReportViewModel 
    { 
     public WeeklyReport LastReport { get; set; } 
     public WeeklyReport Report { get; set; } 
    } 

レポート鑑み

public ActionResult Edit(int id) 
{ 
    WeeklyReport goal = new WeeklyReport() 
    { 
    BodyWeight = 60, 
    DiaryReviewed = true 
    }; 

    WeeklyReport rpt = new WeeklyReport() 
    { 
    BodyWeight = 68, 
    DiaryReviewed = false 

    }; 

    WeeklyReportViewModel viewmodel = new WeeklyReportViewModel() 
    { 
    LastReport = goal, 
    ActualReport = rpt 
    } 

    return View(viewmodel); 

}

@model myproject.ViewModels.WeeklyReportViewModel 

@Html.DisplayFor(x => x.LastReport.BodyWeight) 
を組み合わせます
関連する問題