0

編集アクション中にユーザーがその値にアクセスできないようにするプロパティが mu モデルにあります。編集ビューに含めないと、null 値になります。非表示の値として含めると、ユーザーはブラウザーの [ソース コードの表示] オプションでその値を確認できます。

ヒントはありますか?アクションを編集するための私の 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

ここに1つの解決策があります。登録時に、DB に新しいレコードが作成されると、そのユーザーの GUID() の新しいフィールドを作成します。

new Guid()

次に、ユーザーが自分のプロファイルを編集したいときはいつでも、その GUID を URL パラメーターの 1 つとして持つことができます。データベースからデータを取得するときは、その GUID に一致するレコードを取得するだけです。

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

record => はユーザーデータを保持します。

このようにして、確認番号を表示することはありません。

于 2013-02-05T07:20:43.483 に答える