0

我在 mu 模型中有一个属性,我不希望用户在编辑操作期间访问它的值。如果我不将它包含在编辑视图中,它会得到一个空值。如果我将它作为隐藏值包含在内,用户可以通过浏览器中的“查看源代码”选项查看它的值。

有什么提示吗?这是我用于编辑操作的 ProfileController 代码

    public ActionResult Edit()
    {
        Profile profile = null;
        if (_db.Profiles.Count() > 0)
            profile = _db.Profiles.Single(p => p.UserName == User.Identity.Name);
        if (null == profile)
            return RedirectToAction("Create");
        else
            return View(profile);
    }
    //
    // POST: /Profile/Edit/5

    [HttpPost]
    public ActionResult Edit( Profile newProfile)
    {
        try
        {
            TryUpdateModel(newProfile);
            if (ModelState.IsValid)
            {
                _db.Entry(newProfile).State = EntityState.Modified;
                _db.SaveChanges();
                if (newProfile.Confirmed)
                {
                    return RedirectToAction("Index", "Home");
                }
                else
                    return RedirectToAction("Confirm");
            }
            else
                return View(newProfile);
        }
        catch
        {
            return View();
        }
    }
4

2 回答 2

0

在这种情况下,您正在编辑数据库中的现有条目。这样你就可以:

  • 使用对象的唯一标识符从数据库中加载现有数据
  • 仅覆盖您希望从您从 POST 获得的模型中保留的一组值
  • 刷新对数据库的更改

这样,您不必在页面中包含确认号。

于 2013-02-05T07:04:37.697 回答
0

这是一种解决方案。在注册期间,当在 DB 中创建新记录时,为该用户创建一个新的 GUID() 字段。

new Guid()

然后,每当用户想要编辑他/她的个人资料时,您都会将该 guid 作为 URL 参数之一。从数据库中提取数据时,只需获取与该 GUID 匹配的记录。

var record = repository.FirstOrDefault(x => x.Guid == 'guid from url');

记录 => 将保存您的用户数据。

这样,您就不会以任何方式显示任何验证码。

于 2013-02-05T07:20:43.483 回答