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