2017-12-08 23 views
-1

モデルの代わりにFormCollectionを使用しようとしています。 私はAJAXリクエストを作成:FormCollectionAJAXを使用してFormCollectionにデータを送信

[HttpGet, ValidateInput(false)] 
    public JsonResult Test(FormCollection formData) 
    { 
     string name = formData["name"].ToString(); 
    } 

myData = { 
     id: '1', 
     name: $("#name").val() 
    }; 
    $.ajax({ 
     type: "GET", 
     url: '/testController/Test', 
     data: JSON.stringify(myData), 
     contentType: 'application/json; charset=utf-8', 
     success: function (data) { 
      // do something 
     }, 
     error: function (erro) { 
      console.debug(erro); 
     } 
    }); 

私のコントローラは、しかし、私のFORMDATAは常にnullです。なぜ誰が知っていますか?

ありがとうございました

+0

なぜですか?データを投稿しないようにしたい – user6824563

+0

GETが必要な場合は、 'contentType'オプションと' JSON.stringify() 'を削除します - その' data:myData'(GETには本体がありません)。メソッドは 'public JsonResult Test(int id、string name)'になります。 –

答えて

1

GETリクエストを行っている場合は、実際にこのリクエストを行っています。また、パラメータにはRequest['id'] & Request['name']でアクセスする必要があります。

リクエストURI:/testController/Test?id={data_id}&name={data_name}

リクエストボディ:あなたはPOSTリクエストを行っている場合<empty>

しかし、あなたはこの要求を行っています

リクエストURI:/testController/Test

リクエストボディ: {"id":"data_id","name":"data_name"}

リクエストボディが解析され、y ouはFormCollectionを通じてデータにアクセスできます。そのため、GET要求を行うと、FormCollectionは常にnullになります。

関連する問題