Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/317.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 从mvc4应用程序调用WebApi RTM的正确方法_C#_.net_Asp.net Mvc 4_Asp.net Web Api - Fatal编程技术网

C# 从mvc4应用程序调用WebApi RTM的正确方法

C# 从mvc4应用程序调用WebApi RTM的正确方法,c#,.net,asp.net-mvc-4,asp.net-web-api,C#,.net,Asp.net Mvc 4,Asp.net Web Api,所以有大量的例子,但是找到与rtm比特相关的例子似乎有点难 我有两个项目,一个是WebApi,另一个是MVC4.NET4.5应用程序 我想对某个项目进行更新 我的API中有一个控制器 [HttpPut] public MyModel Update(MyModel model) { //make update return model; } 这是正确的吗?我应该使用HttpResponseMessage而不是仅仅使用MyModel类

所以有大量的例子,但是找到与rtm比特相关的例子似乎有点难

我有两个项目,一个是WebApi,另一个是MVC4.NET4.5应用程序

我想对某个项目进行更新

我的API中有一个控制器

    [HttpPut]
    public MyModel Update(MyModel model)
    {
        //make update
        return model;
    }
这是正确的吗?我应该使用HttpResponseMessage而不是仅仅使用MyModel类吗?我希望尽可能多地返回正确的httpstatus详细信息,因为我希望向第三方开放此api,而不仅仅是我的应用程序


从我的控制器从我的mvc应用程序调用这个api我该怎么做

最好的方法是像这样使用HttpResponseMessage:

[HttpPut]
public HttpResponseMessage Update(MyModel model)
{
    if(notfound)
    {
      return this.Request.CreateResponse(HttpStatusCode.NotFound);
    }

    //make update
    return this.Request.CreateResponse<MyModel>(HttpStatusCode.OK, Model);;
}

如果您想使用httpstaus代码进行响应,则必须返回HttpResponseMessage

您可以选择使用通用方法返回BOs,并从操作和其他mvc应用程序代码中调用它。然后,您的rest调用将始终使用状态代码包装,而其他调用将获得一个对象

[HttpPut]
public MyModel Update(MyModel model)
{
    return base.Request.CreateResponse<MyModel>(HttpStatusCode.OK, UpdateModel(model));;
}

[NonAction]
internal MyModel UpdateModel(MyModel model)
{
    //make update
    return model;
}
[HttpPut]
公共MyModel更新(MyModel)
{
返回base.Request.CreateResponse(HttpStatusCode.OK,UpdateModel(model));;
}
[不行动]
内部MyModel更新模型(MyModel模型)
{
//更新
收益模型;
}

谢谢Erwin,从mvc应用程序调用此方法如何?
[HttpPut]
public MyModel Update(MyModel model)
{
    return base.Request.CreateResponse<MyModel>(HttpStatusCode.OK, UpdateModel(model));;
}

[NonAction]
internal MyModel UpdateModel(MyModel model)
{
    //make update
    return model;
}