2011-07-26 38 views
0

私は、404リソースを見つけることができないというエラーを返すアクションがある理由を理解しようとしています。 コントローラ名:ItemManagementController マイインデックスビューには、テーブル内のアイテムのリストがあります。各行には、「削除」と「リクエストの更新」という2つのリンクがあります。削除リンクは削除アクションを呼び出し、正常に動作します。リクエストの更新で私に404エラーが表示され、http://localhost/TVAPDev/ItemManagement/RequestUpdate?itemID=9のようなURLにナビゲートしようとしているようです。MVC3ルーティングの問題HTTP 404

私は、彼らがビューの観点からしたことと同じであるため、単純なものが欠けていると仮定しなければなりません。コントローラーで定義されているアクションは、サービスレイヤー上でさまざまなメソッドを呼び出す点を除いては同じですが、それだけです。

ここに私の2つのコントローラアクションがあります。彼らは再び表示

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

はリンクです。 Request Updateリンクは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ヘルパーを使用しています。