2011-07-26 77 views
0

我不知道爲什麼我的操作返回404'無法找到資源'錯誤。 控制器名稱:ItemManagementController 我的索引視圖有一個表中的項目列表。每行包含兩個鏈接,'刪除'和'請求更新'。刪除鏈接調用刪除操作並正常工作。請求更新給我404錯誤,好像試圖導航到像http://localhost/TVAPDev/ItemManagement/RequestUpdate?itemID=9這樣的URL。MVC3路由問題HTTP 404

我不得不假設我錯過了一些簡單的東西,因爲它們在視圖方面的作用是相同的。控制器中定義的動作除了在服務層上調用不同的方法外,都是相似的,但就是這樣。

這是我的兩個控制器操作。

[AcceptVerbs(HttpVerbs.Post)] 
public JsonResult Delete(int itemID) { 
    var svc = new ItemManagementService(_repository); 
    var requestModel = svc.GetItemDeleteModel(itemID); 
    svc.DeleteItem(requestModel); 
    var message = requestModel.ActionMessage; 
    return Json(new { id = itemID, ChangeStatus = requestModel.ItemDetails.ItemChangeStatus.ToString(), ChangeType = requestModel.ItemDetails.ItemChangeType.ToString(), message}); 
    } 


[AcceptVerbs(HttpVerbs.Post)] 
public JsonResult RequestUpdate(int itemID) { 
    var svc = new ItemManagementService(_repository); 
    var requestModel = svc.GetItemUpdateRequestModel(itemID); 
    svc.RequestItemUpdate(requestModel); 
    var message = requestModel.ActionMessage; 
    return Json(new { id = itemID, ChangeStatus = requestModel.ItemDetails.ItemChangeStatus.ToString(), ChangeType = requestModel.ItemDetails.ItemChangeType.ToString(), message }); 
    } 

這裏是因爲他們在查看

<td class="tblist" style="white-space: nowrap;"> 
    @Html.ActionLink("Request Update", "RequestUpdate", new { itemID = item.ItemID }, new AjaxOptions { 
            HttpMethod = "POST", 
            Confirm = "Request an Update to this item?", 
            OnSuccess = "actionCompleted" 
            })break; 
    } 
</td> 
<td class="tblist" style="white-space: nowrap;"> 
    @Ajax.ActionLink("Delete", "Delete", new { itemID = item.ItemID }, new AjaxOptions { 
    HttpMethod = "POST", 
    Confirm = "Are you sure you want to delete this Item?", 
    OnSuccess = "actionCompleted" 
     }) 
</td> 

定義同樣,這裏的刪除工作沒有問題的鏈接。請求更新鏈接給我提供了Http 404錯誤。

Anyhelp在這裏將不勝感激。

+0

我注意到,其中一個呼叫使用Ajax.ActionLink,而另一個使用Html.ActionLink。這是你的意圖嗎? –

回答

1

爲什麼在正常的Html.ActionLink(這是Request Update是什麼)上使用AjaxOptions

也許你希望它是這樣的:

@Ajax.ActionLink(
    "Request Update", 
    "RequestUpdate", 
    new { 
     itemID = item.ItemID 
    }, 
    new AjaxOptions { 
     HttpMethod = "POST", 
     Confirm = "Request an Update to this item?", 
     OnSuccess = "actionCompleted" 
    } 
) 
+0

謝謝。我知道我錯過了那樣簡單的事情,但我只是沒有看到它。我有4個其他鏈接,我沒有作爲其中的一部分發布,但它們是HTML鏈接和Ajax鏈接的混合體,所以這使得它更難以找到。再次感謝。 –

1

檢查您的視圖代碼...刪除使用Ajax html助手,更新使用常規html助手。