0

テキストボックスにラベルと現在の値を持つ編集フォームがあります。フォームが送信されたときにフォームの値が変更されたかどうかを確認したいと思います。フォームはこちら

<fieldset>
    <legend>Module <small>Edit</small></legend>
     @using (Html.BeginForm("Edit", "Module"))
    {
        @Html.ValidationSummary(true)
        @Html.HiddenFor(m=>m.Id)
        for(var i = 0; i < Model.Properties.Count(); i++)
        {
            <label class="label">@Model.Properties[i].Name</label>
            <div class="input-block-level">@Html.TextBoxFor(model => Model.Properties[i].Value, new { @value = Model.Properties[i].Value })</div>
        }

         <div class="form-actions" id="buttons">
        <button type="submit" class="btn btn-primary" id="Submit">Save changes</button>
        @Html.ActionLink("Cancel", "ModuleList", null, new { @class = "btn " })
    </div>

    }
</fieldset>

この結果、

ここに画像の説明を入力

フォームが変更されたかどうかを確認するにはどうすればよいですか? 現在、コントローラーの httppost メソッドは次のようになっています

[HttpPost]
public ActionResult Edit(EditModule module)
{
    if (ModelState.IsValid)
    { 
         _repository.SaveModuleEdits(module); 
        Information("Module was successfully edited!");
        return RedirectToAction("ModuleList", "Module", new {area = "Hardware"});
    }
    Error("Edit was unsuccessful, if the problem persists please contact admin!");
    return RedirectToAction("ModuleList", "Module", new { area = "Hardware" });

}

}

4

2 に答える 2

0

Knockoutのようなものを使用する場合、クライアント側ではかなり簡単です。Knockout を変更追跡に使用する方法を説明する記事を次に示します。この記事では、 KoLiteと呼ばれる Knockout アドオンを使用して、さらに簡単にします。

于 2013-07-19T15:14:48.683 に答える
0

値が元の状態 (サーバー側) から変更されたかどうかを確認する 1 つの方法は、HMAC メカニズムを使用することです。

基本的に、文字列と秘密鍵に基づいてハッシュを生成し、このハッシュは非表示フィールド ( ) としてフォームとともに送信http getされます。値が顧客によって変更された場合、ハッシュの再計算 ( http post) は実際とは異なります。非表示フィールドに格納されている場合、誰かがそのフィールドの値を変更したことがわかります。

これは少し手間がかかるかもしれませんが、最も安全な方法の 1 つです。

https://security.stackexchange.com/questions/20129/how-when-do-i-use-hmac

C#でHMAC-SHA1を生成するには?

于 2013-07-19T17:00:43.783 に答える