1

以下の C# WebApi を POST リクエストで呼び出している場合。メソッドにパラメーターが 1 つある場合は問題なく動作します。別のパラメーターを含めたいとしましょう 。public HttpResponseMessage Post(Member member, bool IsAdmin)その場合、値は何になりますdata: { id: 2012, firstName: 'FirstNameValue', lastName: 'LastNameValue' }か?

C#

public HttpResponseMessage Post(Member member)
    {
        try
        {
            var id = BusinessModule.PostMember(member);
            member.Id = id;
            var response = Request.CreateResponse<Member>(HttpStatusCode.Created, member);
            response.Headers.Location = new Uri(VirtualPathUtility.AppendTrailingSlash(Request.RequestUri.ToString()) + member.Username);
            return response;
        }
        catch (MemberException e)
        {
            var response = new HttpResponseMessage(HttpStatusCode.Conflict);
            response.Content = new StringContent(e.Message);
            throw new HttpResponseException(response);
        }
    }

Jクエリ

 function postMember() {
            $.ajax({
                url: baseAddress,
                type: "POST",
                // Firefox reuires the dataType otherwise the "data" argument of the done callback
                // is just a string and not a JSON 
                dataType: 'jsonp',
                accept: "application/json",
                data: { id: 2012, firstName: 'FirstNameValue', lastName: 'LastNameValue' },
            })
            .done(function (data) {
                $("#membersList").append('<li data-member=\'' + JSON.stringify(data) + '\'>' + data.firstName + ' ' + data.lastName + '</i>');
            })
            .fail(function (e) {
                alert(e.statusText);
            })
            .always(function () { });
        }
4

1 に答える 1

0

Web API は、複数の投稿されたコンテンツの値を処理していないようです。

ここで説明と可能な回避策を参照してください。新しいパラメーターをクエリ文字列に入れ、API メソッドで QueryString から変数を読み取ります。

したがって、JQUEryでは次の行になります。

url: baseAddress+"?IsAdmin=true",

C#では次のようになります。

bool IsAdmin = Convert.ToBoolean(queryItems["IsAdmin"]);
于 2012-12-16T14:55:49.897 に答える