2011-07-26 6 views
0

나는 '자원을 찾을 수 없습니다'오류를 반환하는 조치가있는 이유를 알아 내려고 노력하고 있습니다. 컨트롤러 이름 : ItemManagementController 내 인덱스보기에는 테이블의 항목 목록이 있습니다. 각 행에는 '삭제'와 '업데이트 요청'이라는 두 개의 링크가 있습니다. 삭제 링크는 삭제 작업을 호출하고 정상적으로 작동합니다. 요청 업데이트를 통해 404 오류가 나타나며 http://localhost/TVAPDev/ItemManagement/RequestUpdate?itemID=9과 같은 URL로 이동하는 것처럼 보입니다.MVC3 라우팅 문제 HTTP 404

그들은보기 측면에서 그들이하는 것과 똑같기 때문에 나는 간단한 것을 놓치고 있다고 가정해야합니다. 컨트롤러에 정의 된 동작은 서비스 레이어에서 서로 다른 메서드를 호출한다는 점을 제외하면 모두 유사하지만 그게 전부입니다.

여기 내 두 가지 컨트롤러 작업이 있습니다. 그들이 다시보기

<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> 

에 정의 된, 여기에 삭제가 문제없이 작동 될 때 여기에

[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 }); 
    } 

는 링크입니다. 업데이트 요청 링크를 사용하면 HTTP 404 오류가 발생합니다.

Anyhelp 여기에 큰 도움이 될 것입니다.

+0

:

아마 당신은이처럼되고 싶었다. 그게 당신이 의도 한 것입니까? –

답변

1

을 보통 Html.ActionLink에 사용하고있는 이유는 무엇입니까? (Request Update)? 나는 다른 Html.ActionLink를 사용하면서 통화 중 하나가 Ajax.ActionLink를 사용하는 것으로 나타났습니다

@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 도우미를 사용 중입니다.