2

サーバータグ内のビューでモデルプロパティを更新できるかどうか疑問に思っているのですが、ユーザーが入力を入力した後、Java スクリプト関数内でそれらを更新することは可能ですか?

このコードは正常に機能しており、モデル バインディングの助けを借りて、ダイアログ コントローラーで以下のハードコードされた情報を取得できます。"(CallingModalDialogView2アクションメソッド内)

@Html.TextBoxFor(m => m.empname)
@Html.TextBoxFor(m => m.salary, new { @class = "homeSearchBy" })

 @{ MvcApp3.Models.employee emp = new MvcApp3.Models.employee();
    emp.empid = 12121;     //Hard coded some information 
    emp.empname = "Biki";
    emp.empid = 23;
    emp.salary = 111111111;
  }


@Html.MyFramework().Button("ok", Url.Action("CallingModalDialogView2", "Dialog", emp), "title1", "OK")

しかし、テキスト ボックスに情報を入力してモデル プロパティに割り当てようとすると、機能しません。何か間違ったことをしているのですか、それとも MVC では許可されていませんか?

4

1 に答える 1

3

あなたの質問に対する簡単な答え: いいえ

Razor コードはすべてサーバー側でレンダリングされます。ブラウザにページが表示されたら、サーバー側の操作は完了です。

あなたのモデル:

@Html.TextBoxFor(m => m.empname)
@Html.TextBoxFor(m => m.salary, new { @class = "homeSearchBy" })

@Html.HiddenFor(m=> m.empid )
@Html.HiddenFor(m=> m.empname )
@Html.HiddenFor(m=> m.salary )

また:

@Html.Hidden("empid", 1212 )
@Html.Hidden("empname", "Biki" )
@Html.Hidden("salary", 100000 )

それから:

<input type="button" id="change-button" value="change" />

JQuery を使用すると、データの変更は非常に簡単です。

<script>
$(function(){ 
  $("#change-button").click(function(){
    $("#empid").val(12);
    $("#empname").val("Morteza");

    // submit form without ajax
    $("form").submit(); 

    // submit form with ajax
    $.ajax({
      url: "Address of your action method",
      type: "Post", // "Get"
      data:  $("form").serialize(),
      success: function(){
        //...
      }
    });        
  });
});
</script>

私は多くのプロジェクトでこのソリューションを使用しており、うまく機能しています!

于 2012-05-05T15:13:13.440 に答える