如何从nuget包中访问控制器内的参数化方法?

时间:2014-12-12 00:04:04

标签: c# .net json asp.net-mvc model-binding

我有一个包含MVC控制器的nuget包 - MyController有一个方法MethodWithStringParameter(string a)和另一个方法MethodWithoutParameters()
我在我的MVC服务中安装了这个nuget包,并注册了控制器和路由。

public sealed class MyController : Controller
{
    [System.Web.Mvc.HttpPost]
    public HttpResponseMessage MethodWithStringParameter(string a)
    {
        return new HttpResponseMessage
        {
            StatusCode = HttpStatusCode.OK
        };
    }

    [System.Web.Mvc.HttpPost]
    public HttpResponseMessage MethodWithoutParameters()  
    {
        return new HttpResponseMessage
        {
            StatusCode = HttpStatusCode.OK
        };
    }
}

当我尝试点击MethodWithStringParameter方法时,我得到一个例外

  

无效的JSON原语:a。

但是,我可以毫无问题地点击方法MethodWithoutParameters

详细例外

  

输入:“System.ArgumentException”

     

消息:“无效的JSON原语:a。”

     

StackTrace:“位于System.Web.Script.Serialization.JavaScriptObjectDeserializer.BasicDeserialize(String)的System.Web.Script.Serialization.JavaScriptObjectDeserializer.DeserializeInternal(Int32深度)的System.Web.Script.Serialization.JavaScriptObjectDeserializer.DeserializePrimitiveObject()处。系统中的System.Web.Mvc.JsonValueProviderFactory.GetValueProvider(ControllerContext controllerContext)上的System.Web.Script.Serialization.JavaScriptSerializer.Deserialize(JavaScriptSerializer序列化程序,字符串输入,类型类型,Int32 depthLimit)处的输入,Int32 depthLimit,JavaScriptSerializer序列化程序。 System.Web.Mvc.ControllerActionInvoker.GetParameterValues上的System.Web.Mvc.ControllerActionInvoker.GetParameterValue(ControllerContext controllerContext,ParameterDescriptor parameterDescriptor)中的System.Web.Mvc.ControllerBase.get_ValueProvider()处的Web.Mvc.ValueProviderFactoryCollection.GetValueProvider(ControllerContext controllerContext) (ControllerContext controllerContext,ActionDescript System.Web.Mvc.Async.AsyncControllerActionInvoker上的或actionDescriptor。<> c__DisplayClass21.b__19(AsyncCallback asyncCallback,Object asyncState)“

1 个答案:

答案 0 :(得分:0)

您是否尝试将空体发布到此网址http://domainname/My/MethodWithStringParameter?a=abcd