没有在MVC的编辑文本框中显示数据

时间:2017-01-16 19:12:36

标签: asp.net-mvc identity

我是asp.net mvc的新手。我已经用另外两个字段定制了mvc标识。现在,我会让用户更新电子邮件,电话号码等用户信息。当我点击编辑时,我的文本框字段中什么都没有。文本框字段的HTMLEdit为空。对于更新的东西,我必须添加电子邮件,然后如果我单击提交按钮,值将在数据库中更改。

这里的问题是,当我点击“编辑”按钮时,在使用其他电子邮件ID进行任何更改之前,电子邮件等用户数据不会显示在数据库中。

这是我的代码

[HttpPost]
    [ValidateAntiForgeryToken]
    public async Task<ActionResult> UpdateUser(ProfileViewModels model)
    {
        if (!ModelState.IsValid)
        {
            return View(model);
        }

            //get current user and update
            var user = await UserManager.FindByIdAsync(User.Identity.GetUserId());
        if (user == null)
        {
            // Don't reveal that the user does not exist
            return RedirectToAction("Login", "Account");
        }
        user.Email = model.Email;
        user.UserName = model.Email;
        //user.LastName = model.LastName;

        var updateResult = await UserManager.UpdateAsync(user);
        if (updateResult.Succeeded)
        {
            return RedirectToAction("Index", "Home");
        }
        AddErrors(updateResult);

        // If we got this far, something failed, redisplay form
        return View(model);
    }

Chtml代码:

 @using (Html.BeginForm("UpdateUser", "Manage", FormMethod.Post, new { enctype = "multipart/form-data" }))
{
    @Html.AntiForgeryToken()

    <div class="form-horizontal">
        <h4>ProfileViewModels</h4>
        <hr />
        @Html.ValidationSummary(true, "", new { @class = "text-danger" })
        <div class="form-group">
            @Html.LabelFor(model => model.Email, htmlAttributes: new { @class = "control-label col-md-2" })
            <div class="col-md-10">
                @Html.EditorFor(model => model.Email, new { htmlAttributes = new { @class = "form-control" } })
                @Html.ValidationMessageFor(model => model.Email, "", new { @class = "text-danger" })
            </div>
        </div>

        <div class="form-group">
            <div class="col-md-offset-2 col-md-10">
                <input type="submit" value="Save" class="btn btn-default" />
            </div>
        </div>
    </div>
}

帮助将不胜感激。

3 个答案:

答案 0 :(得分:0)

您是否尝试过使用@ Html.TextBoxFor代替@ Html.EditorFor?您是否为电子邮件地址设置了自定义编辑器?

答案 1 :(得分:0)

您可以在

设置断点
return View(model);

因此,您可以检查模型是否实际为空。

我没看到你如何获得模型实例。 您可以添加另一个GET操作以显示数据库中的初始值,仅接受Id字段。您的“编辑”按钮可以改为调用此操作:

public async Task<ActionResult> UpdateUser(string id)
{
  var model = await UserManager.FindByIdAsync(id);
  if (model == null)
  {
      return HttpNotFound();
  }
  return View(model);
}

修改按钮:

@Html.ActionLink("Edit", "UpdateUser", new { id=Model.YourUserIdField })

答案 2 :(得分:0)

在显示视图之前,您需要创建模型并填充它。否则视图没有要使用的值。如下所示:

TASKLIST | FINDSTR ProgramName || START "" "Path\ProgramName.exe"