1

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

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

在我的 Silverlight 时代,我只需在'Step1.FirstName'TextBox 和 ViewModel 属性之间进行双向绑定。在我的摘要中,我可以简单地显示一个也绑定到我的 ViewModel 属性的 TextBlock,或者我可以使用元素绑定将我的 TextBlock.Text 属性绑定到我的 Step1.FirstName.Text 属性。

我知道我不能在 MVC3 中做到这一点,但我不知道如何解决这个问题。我考虑过只是 ajax 发布更新的模块并返回一个名为 的新局部视图ModuleSummary或类似的东西,但这似乎有点 hacky(并且不完全确定这是否会弄乱我在页面上上传的文件)。

有什么我想念的吗?

[编辑-示例代码]

场景:我正在编辑一个最初标题为“我的模块”的模型。显然在初始加载时,我的 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>
}
4

1 回答 1

1

有人刚刚问了一个类似的问题 在最终提交之前显示表单数据(确认视图) 我会问你和那个人一样的问题。你需要去服务器吗?在显示摘要之前是否需要做一些额外的验证?如果没有,那么您可以“轻松”地执行此客户端。使用 javascript(jQuery 或其他一些库)显示摘要,然后在最后发布数据。

于 2012-04-18T09:37:17.883 回答