C# Asp.net MVC中的ExternalLogin()未正确传递更改的viewmodel数据

C# Asp.net MVC中的ExternalLogin()未正确传递更改的viewmodel数据,c#,asp.net-mvc,asp.net-mvc-viewmodel,C#,Asp.net Mvc,Asp.net Mvc Viewmodel,在我的ASP.NETMVC站点中,我有一个注册操作,它接受我的RegisterViewModel [HttpPost] [AllowAnonymous] [ValidateAntiForgeryToken] public async Task<ActionResult> Register(RegisterViewModel model) { // register code here } 当我调用“Register”时,

在我的ASP.NETMVC站点中,我有一个注册操作,它接受我的RegisterViewModel

    [HttpPost]
    [AllowAnonymous]
    [ValidateAntiForgeryToken]
    public async Task<ActionResult> Register(RegisterViewModel model)
    {
       // register code here
    }
当我调用“Register”时,我的RegisterViewModel数据都很好(model.Gender、model.ProfileType等),但当我调用“ExternalLogin”时,Gender和ProfileType不正确。它们是默认值

有人知道这是为什么吗

下面是viewmodel中的html和代码

<div id="formGroup1" class="form-group">
            @Html.LabelFor(m => m.Gender, new { @id = "genderLabel" })
            <div class="">
                @Html.EnumDropDownListFor(m => m.Gender, new {@id = "genderId", @class = "selectpicker form-control" })
            </div>
        </div>
<div id="formGroup2" class="form-group">
            @Html.LabelFor(m => m.ProfileType, new { @id = "profileTypeLabel", @class = "" })
            <div class="">
                @Html.EnumDropDownListFor(m => m.ProfileType, new { @class = "form-control selectpicker" })
            </div>
        </div>

CSHTML代码缺少确定数据是否加载到视图模型中的关键部分,即表单和按钮

仅当ASP输入元素与重定向到控制器的按钮在同一表单中指定时,数据才会正确加载到视图模型中

我猜在您的场景中,与
Register
ExternalLogin
关联的按钮有两种不同的形式


(我还假设您在页面顶部正确设置了
@model

您的CSHTML代码缺少决定数据是否加载到视图模型中的关键部分,即表单和按钮

仅当ASP输入元素与重定向到控制器的按钮在同一表单中指定时,数据才会正确加载到视图模型中

我猜在您的场景中,与
Register
ExternalLogin
关联的按钮有两种不同的形式


(我还假设您已在页面顶部正确设置了
@model

viewmodel中除了性别和ProfileType之外还有其他项目吗?viewmodel中除了性别和ProfileType之外还有其他项目吗?
<div id="formGroup1" class="form-group">
            @Html.LabelFor(m => m.Gender, new { @id = "genderLabel" })
            <div class="">
                @Html.EnumDropDownListFor(m => m.Gender, new {@id = "genderId", @class = "selectpicker form-control" })
            </div>
        </div>
<div id="formGroup2" class="form-group">
            @Html.LabelFor(m => m.ProfileType, new { @id = "profileTypeLabel", @class = "" })
            <div class="">
                @Html.EnumDropDownListFor(m => m.ProfileType, new { @class = "form-control selectpicker" })
            </div>
        </div>
    [Required()]
    [Display(Name = "I am a")]
    public Gender Gender { get; set; }

    [Required()]
    [Display(Name = "Who wants to")]
    public ProfileType ProfileType { get; set; }