1

1 対多の関係 ( LabTest & LabTestDetail) を持つ 2 つのオブジェクトがあります。新しいオブジェクトを追加したいときは、 (親ID)を次のようにLabTestDetail渡しますLabTest IDLabTestDetail Create action methodAjax.actionlink

@Ajax.ActionLink("+ Add New Lab Test Detail",
      "Create", "LabTestDetail",
      new { labtestid = Model.LabTestID },

new AjaxOptions
{

    InsertionMode = InsertionMode.Replace,
    HttpMethod = "Get",
    UpdateTargetId = "replace",
    LoadingElementId = "progress"
})

次のLabTestDetail Create Action methodように見えます。の値を保存する場所labtestid : viewbag-

[Authorize(Roles = "Doctor")]

public ActionResult Create(int labtestid)
            {
                ViewBag.labtestid = labtestid;
                LabTestDetail ltr = new LabTestDetail();
                return PartialView("_Create", ltr);
            }

次に、次のようにcreate viewの値を i に保存します。Viewbaghidden html field

<input type= "hidden" name = "labtestid" value = @ViewBag.labtestid />

最後に、LabTestDetail Post Create actionメソッドは次のようになります:-

[Authorize(Roles = "Doctor")]    
[HttpPost]
            [ValidateAntiForgeryToken]
            public ActionResult Create(LabTestDetail ltr, int labtestid)
            {
                try
                {
                    if (ModelState.IsValid)
                    {
                        ltr.LabTestID = labtestid;
                        repository.AddLabTestDetail(ltr);
                        repository.Save();
                        return PartialView("_datails", ltr);
                    }
                }
    //code goes here

上記は、テストしたときにうまく機能しますが、私の大きな懸念はlabtestid、次のアクション中に攻撃者によって の値が変更されていないことを確認する方法です:-

  1. からにlabtestid値を渡すときajax.action linkcreate action method

  2. labtestid値をビューバッグとして渡すとき

  3. labtestidそして最後に、値を aに割り当てるとhtml hidden field

よろしくお願いいたします。ブラジル

4

1 に答える 1

0

認証を使用し、認証されたユーザーのみがこれらの操作を実行できる場合、更新を実行することになっているアクション内で、現在認証されているユーザー ( User.Identity.Name) がラボ テストの所有者であるかどうかを確認できます。これが機能するには、これらのラボ テスト ID をユーザーに関連付ける必要があることを意味します。

于 2012-04-23T07:41:38.857 に答える