1
4

3 に答える 3

3

あなたができることは、HTTP POST代わりにリクエストを行うことですHTTP GET

$('#postLink').click(function() {
    var MyPerson = {
        ID: 1234,
        FirstName: 'abc',
        LastName: 'def'
    };

    $.ajax({
        data: MyPerson,
        url: $(this).attr('href'),
        type: 'POST',
        dataType: 'json' /* this really is optional */,
        success: function (response) {
            return true;
        },
        error: function ( error ) {
            return false;
        }
    )};

    return false; /* required to stop event propagation */
});

<a>これで、次のように HTML 要素を定義できます。

<a href="/test/Index" id="postLink">Ajax post the person to the server.</a>

これで、コントローラーはPersonオブジェクトを解析できるようになります。

編集List<Person>:各リクエストで渡さない場合は、を削除することをお勧めします。ASP.NET が複雑な型 (Personこの場合) を要求のデータ型として識別するのに役立ちます。ビューの厳密に型指定されたデータ コンテキストを持つように、ビューごとに ViewModel を作成することをお勧めします。

class PersonViewModel
{
    public int ID { get; set; }
    public string FirstName { get; set; }
    public string LastName { get; set; }
}
于 2012-08-04T23:31:03.083 に答える
0

そんなことはできません。URI は文字列です。文字列としてフォーマットされていないデータを渡したい場合は、それを文字列にシリアル化し、反対側で逆シリアル化する必要があります。

一般的に、JSONは一般的なシリアル化形式ですが、すべての文字列が URI セーフであるとは限らないため、URI に含める前にJSON テキストをエンコードする必要があることに注意してください。

ただし、データが 3 つしかないので、次のことができます。

var html = "<a href='/test/Index/person/" +
           encodeURIComponent( MyPerson.ID ) + "/" +
           encodeURIComponent( MyPerson.FirstName ) + "/" +
           encodeURIComponent( MyPerson.LastName ) + 
           "></a>";

または、データがサーバーに既に存在する場合は、ID 値を渡して、データベースから名前を取得します。

于 2012-08-04T23:20:21.853 に答える