忽略编辑视图中的字段asp.net mvc 3

时间:2013-02-05 06:38:45

标签: asp.net-mvc-3 edit

我在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();
        }
    }

2 个答案:

答案 0 :(得分:0)

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

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

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

答案 1 :(得分:0)

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

new Guid()

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

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

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

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