不管你信不信,我有一个名为的视图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>
}