我是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>
}
帮助将不胜感激。
答案 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"