2017-04-02 14 views
0

環境:RedirectToRoute不工作

我在工作的WebAPI。我實施了所有的CRUD方法。

場景:

在PUT方法,我不包括像 'CreatedDate' 一些屬性被更新。我的代碼如下所示;

[Route("")] 
public async Task<IHttpActionResult> Put(MyModel myModel) 
{ 
    //Parsing to Business Entity 
    var item = TheFactory.Parse(myModel); 
    bool result = await _myBL.UpdateLab(item); 
    if (!result) 
    { 
     return BadRequest("Error in Save"); 
    } 
    //Converting to view model and return 
    return Ok(TheFactory.Create(item)); 
} 

問題:

我在這裏不是從用戶獲得CreatedDate。所以它總是最短的日期。在DAL中,我將此字段指定爲未修改,因此它始終具有已創建的數據值。作爲回報,我將從給出的模型用戶轉換爲viewmodel。所以CreatedDate是最短日期不是原創的。

MySolution:

因此再次避免獲取更新從數據庫對象,並返回給用戶。我已經有方法通過傳遞id來返回對象。所以我只是改變了我的PUT方法,如下所示;

[Route("")] 
public async Task<IHttpActionResult> Put(MyModel myModel) 
{ 
    //Parsing to Business Entity 
    var item = TheFactory.Parse(myModel); 
    bool result = await _myBL.UpdateLab(item); 
    if (!result) 
    { 
     return BadRequest("Error in Save"); 
    } 
    //Redirect to getbyid method 
    return RedirectToRoute("GetById", new { id = item.Id }); 
} 

問題:

在這裏,我想我可以重用的方法獲取方法,因此也返回OK(對象)。但改成這個後,我得到了以下例外;

請求的資源不支持http方法'PUT'。

響應狀態是405,請幫我找到routecause

回答

0

你需要就叫GetById(item.id)

[Route("")] 
public async Task<IHttpActionResult> Put(MyModel myModel) 
{ 
    //Parsing to Business Entity 
    var item = TheFactory.Parse(myModel); 
    bool result = await _myBL.UpdateLab(item); 
    if (!result) 
    { 
     return BadRequest("Error in Save"); 
    }   
    return GetById(item.Id); 
}