1

私はほとんど問題なく立ち往生しています

フォームに3つの非表示のコントロールが含まれているので、jqueryを介して値を送信しています。私が警戒を続けている間、これまではうまく機能しています。

FormCollectionを使用していて、.csファイルでこれらの非表示の値を取得しようとしていますが、これらの値を元に戻すことができません。FormCollectionsでブレークポイントを維持すると、キー番号を含むすべての非表示のコントロール名が表示されます。

意見:

<tr>
    <td colspan ="2">
        @Html.Hidden("hdnddlid")
        @Html.Hidden("hdnrblMale")
        @Html.Hidden("hdnrblFeMale")
    </td>
</tr>

<script type="text/javascript">
    $(document).ready(function () {
        $("input[name='Gender']").change(function () {
            if ($("input[name='Gender']:checked").val() == '1') {
                hdnrblMale = "Male";
            }
            else if ($("input[name='Gender']:checked").val() == '0') {
                hdnrblFeMale = "FeMale";
            }
        });
    });
</script>

.csファイルのコード

public static void InsertPersonalDetails(PersonalDetails modelPersonal, FormCollection frmHdnValues)
{
    try
    {
        PersonalDbContext db = new PersonalDbContext();

        string Male = frmHdnValues["hdnrblMale"].ToString();
        string Female = frmHdnValues["hdnrblFeMale"].ToString();

        db.Entry(modelPersonal).State = EntityState.Added;
        //pDetails.Add(Objpd);
        db.SaveChanges();
        // return pDetails;
    }

ありがとう

4

2 に答える 2

2

私は何か不足していますか、それともあなたのjQueryは次のようにする必要はありません:

$("input[name='hdnrblMale']").val("Male");

それ以外の

hdnrblMale = "Male";

また、フィールドが送信されるフォーム内にあることを確認してください。

を組み合わせて使っています

  • Visual Studio : ブレーク ポイント、コードのステップ スルー、イミディエイト ウィンドウ
  • Chrome : JS のブレークポイント、JS の即時ウィンドウ、要素の検査
  • fiddler2 : サーバーとの間で実際に送受信されていることを確認します (トラフィックが fiddler に表示されるように、localhost の代わりに localhost. を使用することに注意してください。たとえば、localhost:69230 の代わりに localhost.:69230 を使用します)。

この種のものをデバッグするには..そのようにして、チェーンのすべての部分を可視化する必要があります。

于 2012-05-02T13:45:56.700 に答える
0

入力タイプを非表示にして、コントローラーに書き込みrequest.form["FieldName"]ます。これは私の場合は機能しています

于 2012-05-04T09:19:13.667 に答える