AddEditModule
信じられないかもしれませんが、モジュールの追加または編集に使用されるという名前のビューがあります。ワークフローは、div を非表示/表示するナビゲーション ボタンを使用する一種のウィザードです。
と呼ばれるViewModelがありますAddEditModuleModel
(10倍速いと言います)。ステップ 1 と 2 では、さまざまな EditorFor を使用してフィールドを表示しています。ステップ 3 では、DisplayFor を使用して、テキスト ボックスの現在の値の概要を表示したいと思います(モデルに渡されたものではなく、ビューで更新されたもの)。
'Step1.FirstName'
Silverlight の時代には、 TextBox と ViewModel プロパティの間で双方向のバインドを行うだけでした。要約では、ViewModel プロパティにもバインドされている TextBlock を単純に表示するか、Element Binding を使用して TextBlock.Text プロパティを Step1.FirstName.Text プロパティにバインドすることができます。
MVC3 ではそれができないことはわかっていますが、これを解決する方法がわかりません。更新されたモジュールを ajax で投稿し、 などと呼ばれる新しい部分ビューを返すことだけを考えましModuleSummary
たが、それはちょっとハックに思えました (それがページ上のファイルのアップロードを台無しにするかどうかは完全にはわかりません)。
足りないものはありますか?
[編集 - サンプルコード]
シナリオ: もともと「My Module」というタイトルのモデルを編集しています。明らかに、初期ロード時に、私の DisplayFor model.title は「My Module」に設定されます。ステップ 1 で、タイトルを「My New Module Title」に変更したとします。私が知りたいのは、ボタンをクリックして [概要] を表示して新しいタイトルを表示するときに、モデルを「更新」する方法があるかどうかです。
@model CEAcademy.AddEditModuleModel
@using (Html.BeginForm("AddModule", "Module", FormMethod.Post, new { enctype = "multipart/form-data" })) {
@Html.ValidationSummary(false)
<fieldset>
<legend></legend>
<div id="step1">
<div class="editor-label">
@Html.LabelFor(model => model.title)
</div>
<div class="editor-field">
@Html.EditorFor(model => model.title)
@Html.ValidationMessageFor(model => model.title)
</div>
</div>
<div id="summary">
<div class="display-label">
@Html.LabelFor(model => model.title)
</div>
<div class="display-field">
@Html.DisplayFor(model => model.title)
</div>
</div>
<input type="button" id="showSummary" value="Step 2: View Summary" />
</fieldset>
}