4

C# MVC アプリケーションがあり<form>page.cshtmlファイルに があります。その形で私は<input type="text" ... />要素を持っています。このフォームを送信すると、手動で値を変更した (つまり、テキスト ボックスに入力してから何かを入力した) 入力から、Response.Paramsまたは入力からのみ値を取得します。Response.Form

jQuery で値を$('#myInput').val('some value');変更すると、入力の値の変更としてカウントされずmyInput、フォームを送信したときに の値が取得されません。

すべての入力が送信されたことを確認する方法はありますか? そうでない場合は、モデルがバインドされる前に発生する何らかのイベントで、これに対する適切な回避策がありますか? 変更されたかどうかにかかわらず、送信時にフォームからのすべての入力値を知る必要があります。

いくつかの追加情報:

フォームとその他の値が正しく送信され、コントローラーで POST アクションが呼び出されたときにモデルを受け取ります。

本当の問題は、モデルがバインドされているときです。コレクションに含まれていないため、送信されていない値を除くすべての値で作成およびバインドされていRequest.Paramsます。

4

2 に答える 2

3

フィールドが無効になっている場合にのみ、この動作を見たことがあります。このため、私は通常、フォームの送信を処理し、送信時に再度有効にする JavaScript 関数を使用しています。これにより、正しい値がサーバーに送信されます。

このようなものが私にとってはうまくいきます(注:私はJQueryを使用しています):

$(document).ready() {
    $("#ButtonSubmit").click(SubmitForm);
}

function SubmitForm(e) {
    e.preventDefault();

    //ensure fields are enabled, this example does text and checkbox types
    $("[type='text']").attr("disabled", false);
    $("[type='checkbox']").attr("disabled", false);

    //submit the form
    document.forms[0].submit();
}

これを行う簡単な方法を知りません。すべてのフィールドを送信するように指示する何かに「フラグを立てる」ことができればいいと思います。しかし、これが存在するかどうかはわかりません。他の誰かがより良い解決策を提供できるかもしれません。

EDIT : 送信されない無効なフィールドは HTML の性質にすぎず、MVC に関連付けられているものではないようです。


readonly代わりにフィールドを作成するとdisabled、値は引き続き送信されるようです。ただし、このアプローチでは、「無効な」スタイリングが失われます。このルールの例外はコントロールです。これはどちらselectにも提出されないようです。これに関する詳細情報は、この質問にありますreadonly

于 2013-04-29T15:28:06.580 に答える
0

razor ヘルパーを使用して form タグを作成してみてください。

@using(Html.BeginForm()) { ..

// make sure this is a submit button
<input type="submit" value="Save" />

}

コントローラー アクションの post メソッドで、必ず [HttpPost] で装飾してください。例えば、

[HttpPost] public ActionResult Edit(YourModel モデル) {

}

于 2013-04-29T15:32:47.630 に答える