首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >使用DisplayFor模板显示时将模型绑定回

使用DisplayFor模板显示时将模型绑定回
EN

Stack Overflow用户
提问于 2010-10-21 20:07:08
回答 3查看 2.4K关注 0票数 0

我有模型

代码语言:javascript
运行
复制
public class PersonViewModel
{
    public Guid Id { get; set; }
    public string Firstname { get; set; }
    public string Lastname { get; set; }
}

它嵌套在其他视图模型中:

代码语言:javascript
运行
复制
public class ApprovalModel
{
    [UIHint("MyDisplayTemplate")]
    public PersonViewModel User { get; set; }

    [Required]
    public bool? Approve { get; set; }
}

在Views -> Shared -> DisplayTemplates下,我有一个模板MyDisplayTemplate.ascx

在我的视图ApprovalModel视图中,我使用以下行,它显示了嵌套的模型:

代码语言:javascript
运行
复制
<div class="display-field"> <%: Html.DisplayFor(model => model.User) %> </div>

在我的控制器里,我有一个动作

代码语言:javascript
运行
复制
[HttpPost]
public virtual ActionResult ApproveRequest(ApprovalModel vm)
{
    //access bound vm.User  here
}

有没有一种简单的方法将嵌套的模型绑定回post请求?或者我还能做些什么来把它绑定回去?

谢谢

EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2010-10-21 23:00:00

将视图模型保存在会话中,并将id呈现为隐藏字段。然后,post操作可以从会话中检索模型,或者在模型不存在的情况下通过id加载模型。

视图:

代码语言:javascript
运行
复制
<%: Html.HiddenFor(x => x.Id) %>

控制器:

代码语言:javascript
运行
复制
[HttpPost]
public virtual ActionResult ApproveRequest(int id)
{
    //access bound vm.User  here
}
票数 2
EN

Stack Overflow用户

发布于 2010-10-21 20:10:43

您需要在显示模板中输入字段:

代码语言:javascript
运行
复制
<%: Html.HiddenFor(x => x.Id) %>
<%: Html.LabelFor(x => x.Firstname) %>
<%: Html.TextBoxFor(x => x.Firstname) %>
<br/>
<%: Html.LabelFor(x => x.Lastname) %>
<%: Html.TextBoxFor(x => x.Lastname) %>

在您的控制器操作中,指示用户前缀,以便模型绑定器能够正确识别请求值并将它们绑定到ApprovalModel

代码语言:javascript
运行
复制
[HttpPost]
public ActionResult ApproveRequest([Bind(Prefix = "User")] ApprovalModel vm)

此外,编辑器模板似乎更适合于生成表单和输入域(<%: Html.EditorFor(model => model.User) %>),而不是显示模板。

票数 2
EN

Stack Overflow用户

发布于 2010-10-22 01:28:15

您不需要将文件放入文本框中,只需将其放入一些输入字段中,因此当页面回发时,这些值将被发送回服务器。因此,只需使用HiddenFor(....)对于要在回发时恢复的每个字段

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/3987228

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档