ASP.NET MVC3 - 在表单提交之前显示“更新的”模型值以进行摘要显示

时间:2012-04-18 07:05:56

标签: asp.net-mvc asp.net-mvc-3

我有一个名为AddEditModule的视图,无论信不信由你用于添加或编辑模块。工作流程是一种使用隐藏/显示div的导航按钮的向导。

我有一个名为AddEditModuleModel的ViewModel(说快10倍)。在步骤1& 2我正在使用各种EditorFor来显示我的字段。在第3步中,我想使用DisplayFor来显示我的文本框的当前值的摘要(在视图中已更新的内容,而不是模型中传递的内容)。

在我的Silverlight时代,我只需要在'Step1.FirstName' TextBox和ViewModel属性之间进行双向绑定。在我的总结,我可以简单地显示也被绑定到我的视图模型属性的TextBlock,我也可以使用元素绑定到我的TextBlock.Text广告载体绑定到我的Step1.FirstName.Text财产。

我知道我不能在MVC3中这样做,但我不知道如何解决这个问题。我想到了刚刚发布的AJAX更新模块,并返回一个名为ModuleSummary,或类似的东西一个新的部分观点,但似乎有点哈克(如果这会打乱在页面上我的文件上传不能完全确定)。

我有什么遗失的吗?

[编辑 - 示例代码]

方案: 我正在编辑一个最初标题为“我的模块”的模型。显然在初始加载时,我的DisplayFor model.title将被设置为“我的模块”。让我们假设,在第1步,我将标题更改为“我的新模块标题”。我想知道的是,当我点击按钮显示摘要以显示我的新标题时,是否有办法“刷新”我的模型。

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

1 个答案:

答案 0 :(得分:1)

有人刚问了一个类似的问题 Display form data before final submission (confirmation view) 我会问你问那个人的事情。你需要去服务器吗?在显示摘要之前是否需要进行一些额外的验证? 如果没有,那么你可以“轻松”做到这个客户端。使用javascript(jQuery或其他一些lib)显示摘要,最后发布数据。