0

クリック イベントを持つ単純な div の代わりに、送信ボタンのないフォーム内のデータを送信したいのですが、このデータはすべて、コントローラーのアクションによって厳密に型指定されたビュー モデルとして受信される必要があります。たとえば、次のhtmlがあります

<form method="POST"  id="frm" name="frm">
<input type="text" name="Texting"/>
<select name="Car">
 <option value="volvo">Volvo</option>
 <option value="saab">Saab</option>
 <option value="opel">Opel</option>
 <option value="audi">Audi</option>
 </select> 
<input type="checkbox" name="IsChecked" checked="checked"/>

</form>
@PageResources.btnSearch
<script type="text/javascript">
function doAction() {
    $.post("DoAction",JSON.stringify($("#frm").serialize()), function(data) {
    });

  }

また、コントローラーのアクションは次のようになります

    [HttpPost]
    public ActionResult DoAction(TestViewModel model)
    {

        return Json(model, JsonRequestBehavior.AllowGet);
    }

そしてビューモデル

  public class TestViewModel
{
    public string Texting;
    public string Car;
    public bool IsChecked;
}

アクションが呼び出されたとき、問題は、コントロールに何かを入力してもモデルに値がないことです。何が問題なのですか?mvc が私のデータをビューモデルとして解釈しないのはなぜですか?

4

1 に答える 1

0

Jquery Doaction() function で。次のようにビューモデルを準備します。

var model={
         Texting:$('#IdForInputText').val(),
         Car:$('#IDforSelectList').val(),
         IsChecked:$('#IDForCheckBox').is(':checked'),
}

また

 var model={
             Texting:$('input[name="Texting"]').val();
             Car:$('select[name="Car"] option:selected').val(),
             IsChecked:$('input[name="IsChecked"]').is(':checked');
    }

次に使用する

 JSON.stringify(model)

理解できない場合はコメントを残してください

于 2013-08-14T11:08:12.283 に答える