首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >多模型视图仅发布1模型

多模型视图仅发布1模型
EN

Stack Overflow用户
提问于 2014-02-22 02:27:52
回答 1查看 57关注 0票数 1

这就是我所用的视图模型

代码语言:javascript
运行
复制
public class MainRegisterViewModel
{
    public RegisterViewModel RegisterModel { get; set; }
    public RegisterFormValuesViewModel RegisterValues { get; set; }
}

RegisterFormValuesViewModel包含控件的所有值(国家、州和诸如此类的列表),RegisterViewModel包含用户的信息。

然后我像这样加载控件。

代码语言:javascript
运行
复制
@model ProjetX.Models.MainRegisterViewModel
@{  
    IEnumerable<SelectListItem> countries = Model.RegisterValues.Countries.Select(x => new SelectListItem()
    {
        Text = x.Country,
        Value = x.Id.ToString()
    });

    IEnumerable<SelectListItem> states = Model.RegisterValues.States.Select(x => new SelectListItem()
    {
        Text = x.State,
        Value = x.Id.ToString()
    });
}

<div class="container">

    <div class="row">
        <div class="col-md-12">
            @using (Html.BeginForm("Register", "Account", FormMethod.Post, new { @class = "form-horizontal", role = "form" }))
            {

               ....

                <div class="form-group">
                     @Html.LabelFor(m => m.RegisterModel.Country, new { @class = "col-md-2 control-label" })
                     <div class="col-md-10">
                          @Html.DropDownListFor(m => m.RegisterModel.Country, countries, new { @class = "form-control" })
                     </div>
               </div>

                ....

同时,寄存器函数接受一个MainRegisterViewModel作为参数。

代码语言:javascript
运行
复制
public async Task<ActionResult> Register(MainRegisterViewModel model)

问题是当我提交表单时,RegisterFormValuesViewModelNULL

知道为什么吗?

谢谢

上下文

我这样做是因为我从一个API加载了RegisterFormValuesViewModel,并且我只尝试调用它一次。问题是当用户发布带有错误的表单并返回视图时,我不得不再次调用API以获得RegisterFormValuesViewModel

在此之前,它只是RegisterFormValuesViewModel的一个模型和一个视图包,但是每次加载表单时,我都必须调用API,因为没有发布这个视图。这就是为什么我认为我可以使用两个模型,并张贴他们两个。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2014-02-22 02:49:52

如果希望发布RegisterFormValuesViewModel的值,则需要将它们包括在ModelBinder查找值的表单或其他位置中。(默认)模型绑定将从操作参数、Request.Form、路由数据和Request.QueryString (我认为Request.Files也包括在内)中获取值。

如果您的RegisterFormValuesViewModel创建成本很高,您可以将它的值作为隐藏字段添加到表单中,或者实现与应用程序或会话状态一起工作的自定义ValueProviderFactory

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

https://stackoverflow.com/questions/21948840

复制
相关文章

相似问题

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