2

次のコードは ajax を使用して正常に投稿されますが、MVC のサーバー側の ActionResult が送信されるオブジェクトをどのように理解できるかはわかりません。何か案は?jquery から送信する必要があるオブジェクトは、いくつかのプロパティを持つオブジェクトです。ありがとう

           var url = 'abc';
           //val: { several properties, forename, surname, postcode

           jr.ajax.loadJson(url, val,
               true,
               function(xhr, textStatus, errorThrown) {
               }, 
               true, 'post', val);
           });


// controller

public ActionResult Show()
{
        var list = Request.Form[0];  // can see the values in here
}


// I want the posted value to be this object

public class Test
{
    public string forename { get; set; }        
    public string surname { get; set; }        
    public string postcode { get; set; }
}
4

2 に答える 2

3

同様のプロパティを持つオブジェクト パラメーターを期待するアクションにオブジェクトをポストする必要があります。何が機能するかはよくわかりloadJSONませんが(使用しているプラ​​グインだと思いますか?)、データを投稿するときは、標準の$.ajax方法を使用するか$.post、より単純なAPIなどを使用できます

サーバ側

public class MyModel
{
    public string Property1 { get; set; }
    public string Property2 { get; set; }
    ...
}

[AjaxOnly]
public ActionResult Show(MyModel model)
{
    // use model
}

クライアント側

var obj = { Property1: 'value1', Property2: 'value2' };
$.post(url, obj, function(response) {
    alert('post successful!');  
});

データがサーバーに到達すると、MVC は、名前と値のペアのアプローチを使用して、クライアント側のオブジェクトを予想されるサーバー側の型にバインドしようとします。つまり、クライアントから渡されるオブジェクトに、正確に同じ名前とその特定のプロパティ タイプの有効な値を持つプロパティがある限り、正常にマップされます。

于 2013-06-20T12:03:55.257 に答える
0

json オブジェクトを投稿するときは、型をメソッド パラメーターとして追加するだけで、オブジェクト バインダーがそれを変換します。

public ActionResult Show(Test test)
    {
         [...]
    }
于 2013-06-20T11:59:40.410 に答える