1

これが私のルートです:

routes.MapHttpRoute(name: "InsertOrUpdateDirector", routeTemplate: "api/awards/directors", defaults: new
    {
       controller = "Awards", action = "InsertDirector"
    });

コントローラーメソッドは次のとおりです。

[HttpPost]
public void InsertOrUpdateDirector(Director director, string operation)
{
   string query = null;

   myConnection.Open();
   if (operation == "I")
   {
     query = "INSERT INTO...";
   }
   else if (operation == "U")
   {
     query = "UPDATE...";
   }
   var cmd = new SqlCommand(query, myConnection);
   cmd.ExecuteNonQuery();
   myConnection.Close();
}

JSONオブジェクトを上記に送信すると、機能します。

次に、JSON オブジェクトと文字列パラメーターを渡すことができるようにする必要があります。

JSON オブジェクトのみを渡す AJAX 呼び出しを次に示します。

$.ajax({
        url: "http://localhost/x/api/awards/directors",
        type: "POST",
        dataType: "json",
        data: directorData 
     }).done(function () {
         detailRow.find(".directorsOrRecipients").data("kendoGrid").refresh();
     });

私の質問は、このシナリオで JSON オブジェクトと文字列「I」をコントローラーに渡すにはどうすればよいですか?

directorDataちなみにJSONオブジェクトです。

4

3 に答える 3

0

操作を処理できるようにルートを調整できます。

routes.MapHttpRoute(name: "InsertOrUpdateDirector",
    routeTemplate: "api/awards/directors/{operation}",
    defaults: new
       {
           controller = "Awards",
           action = "InsertDirector",
           operation = UrlParameter.Optional
       });

次に、それを呼び出すときに、URL を適切にフォーマットします。

url: "/Awards/directors/someoper",

これは通常の MVC で動作します (このマシンには WebAPI がありませんが、そこでも動作すると予想されます)。

operation個人的には通常モデルとの混用は避けたいところです。うまくいくかもしれませんが、後で混乱するかもしれません。

于 2013-09-11T18:49:49.997 に答える