1

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>
}
4

1 に答える 1

1

先ほど似たような質問 をされた方最終提出前にフォームデータを表示する(確認画面) あの方と同じことをお聞きします。サーバーに行く必要がありますか?概要を表示する前に、追加の検証が必要ですか? そうでない場合は、このクライアント側を「簡単に」実行できます。javascript (jQuery またはその他の lib) を使用して概要を表示し、最後にデータを POST します。

于 2012-04-18T09:37:17.883 に答える