1

PostUserAccountというモデルがあり、Entity Frameworkを使用して読み取り/書き込みアクションでコントローラーを生成するときと同じように、ApiControllerでパラメーターとして使用しようとしています

コントローラー ジェネレーターによって生成される例:

    // POST api/Profile
    public HttpResponseMessage PostUserProfile(UserProfile userprofile)
    {
        if (ModelState.IsValid)
        {
            db.UserProfiles.Add(userprofile);
          ...etc

私が取り組んでいるコード:

    // POST gamer/User?email&password&role
    public HttpResponseMessage PostUserAccount(PostAccountModel postaccountmodel)
    {
        if (!ModelState.IsValid)
        {
            return Request.CreateResponse(HttpStatusCode.BadRequest, ModelState);
        }

         if (postaccountmodel == null) return Request.CreateResponse(HttpStatusCode.BadRequest, "model is null");

        ...etc

何らかの理由で、この場合、postaccountmodel は null であり、この API コマンドを実行すると、「model is null」が返されます。何か案は?

対象機種はこちら

public class PostAccountModel
{
    [Required]
    public string Email { get; set; }

    [Required]
    public string Password { get; set; }

    public string Role { get; set; }

    public string Avatar { get; set; }

    public string DisplayName { get; set; }
}
4

2 に答える 2

2

URI クエリ文字列でモデルを送信しようとしています。問題:

  1. クエリ文字列の形式が正しくありません - ?Email=xxx&Password=xxx& ... にする必要があります。

  2. [FromUri] 属性を使用して postaccountmodel パラメーターをデコレートし、URI からモデルをバインドするように Web API に指示する必要があります。

もう 1 つのオプションは、要求本文でモデルを JSON または XML として送信することです。特にリクエストで実際にパスワードを送信している場合は、それをお勧めします。(そしてSSLを使用してください!)

このトピックでは、Web API のパラメーター バインディングについて説明します: http://www.asp.net/web-api/overview/formats-and-model-binding/parameter-binding-in-aspnet-web-api

于 2013-07-28T03:42:35.047 に答える
-1

[FromBody] 属性を postaccountmodel パラメーターの前に置いてみてください。

http://msdn.microsoft.com/en-us/library/system.web.http.frombodyattribute(v=vs.108).aspx

于 2013-07-27T02:55:39.050 に答える