将c#get方法转换为post方法,从javascript调用

时间:2015-03-19 15:07:30

标签: javascript c#-4.0 http-post

我有一些c#api控制器,它们是当前的get()方法。我想将它们全部转换为帖子。 在JavaScript方面,我可以看到它相当直接,但需要一些主要在c#中的指导。

这是我在c#中的当前get()方法:



using System;
using System.Collections.Generic;
using System.Linq;
using System.Net;
using System.Net.Http;
using System.Text;
using System.Web.Http;
using DynAggrClient;


namespace theapi.Controllers
{
    public class dimController : ApiController
    {
        // GET api/dim/?sid=SID&values=T/F
        //
        public HttpResponseMessage Get()
        {
            string sid = UrlUtil.getParam(this, "sid", "");
            int returnValues = 0;

            if (UrlUtil.getParam(this, "values", "F") == "T" )
                returnValues = 1;

            string resp = DynAggrClientAPI.dimRequest(sid, returnValues );

            var response = Request.CreateResponse(HttpStatusCode.OK);
            response.Content = new StringContent(resp, Encoding.UTF8, "application/json");

            return response;
        }
    }
}




和我目前的前端http电话:



function getDimensionsFromServer() {
	// fetch Dimensions list form server; 
	var rageVars = $rootScope.rageSessionVars;
	var returnValues = true;
	var url = "http://" + rageVars.domainName + ":" + rageVars.port + "/api/dim?sid=" + rageVars.sessionID + "&values=" + returnValues;
	var deferred = $q.defer();
	deferred.notify("Getting Dimensions...");
	$http({
		method: 'GET',
		encoding: 'JSON',
		headers: {
			'Access-Control-Allow-Origin': 'true'
		},
		withCredentials: true,
		url: url
	}).success(function (data, status, headers, config) {
		var retval = data;
		deferred.resolve(retval);
	});
	return deferred.promise;
}




根据我目前在JavaScript方面的研究,我的http帖子请求看起来应该是这样的:



var sid = 'abf843945b6';
var url = 'http://localhost/api/dim';
var req = {
	method: 'POST',
	url: url,
	headers: {
		'Content-Type': undefined
	},
	data: { sid: sid },
}

$http(req).success(function(data, status, headers, config){

}).error(function (data, status, headers, config) {

});




但是我需要有关如何将c#get()方法转换为post()的进一步建议。

提前致谢,

鲍勃

1 个答案:

答案 0 :(得分:0)

    [System.Web.Http.HttpPost]
    public class dimController : ApiController
    {
        // GET api/dim/?sid=SID&values=T/F
        //
        public HttpResponseMessage Post()
        {
            string sid = Request.Form["sid"];
            int returnValues = 0;

            if (Request.Form["values"] == "T" )
                returnValues = 1;

            string resp = DynAggrClientAPI.dimRequest(sid, returnValues );

            var response = Request.CreateResponse(HttpStatusCode.OK);
            response.Content = new StringContent(resp, Encoding.UTF8, "application/json");

            return response;
        }
    }