-1

クイック初心者の質問。「ソースの表示」でこれに変換される Html.ActionLink の理由がわかりません

<a href="/Customer/CustomerSave?custid=1104">Save</a>

私の Html ヘルパーは次のようになります。

<%: Html.ActionLink("Save", "CustomerSave","Customer",new {custid = 101 })%> 

コントローラーにアクセスしようとすると、「リソースが見つかりません」というエラーが表示されます。

[HttpPost]
public ActionResult CustomerSave(int custid)
{
........
}

明らかにアンカーがうまく形成されていません。他の投稿を読んで他のオプションを試しましたが、何が起こっているのか完全にはわかりません。私がやろうとしているのは、Customer Controller でアクション (「CustomerSave」) を実行することだけです。

私は何を間違っていますか?

4

3 に答える 3

3

を HTTPGet に変更するCustomerSaveか、HTTPPost を削除してください。

[HttpPost] //<-- Here
public ActionResult CustomerSave(int custid)
{
........
}

アクションに HTTPPost 属性がマークされているのに、ActionLink が HttpGet として動作しているため、エラーが発生しています。投稿にしたい場合は、リンクのクリック時にアクションに Ajax POST リクエストを作成してみてください。デフォルト アクション URL リンク クリックでGETリクエストが実行されます。

この方法を試してください

       @Ajax.ActionLink("Save", 
             "CustomerSave",
            "Customer",
             new {custid = 101 },
            new AjaxOptions {
                HttpMethod = "POST",
                OnSuccess = "saveCustomer"
        }) ;

とJS

 function saveCustomer(response, status, data) {

       // Here you get any response
    }

または、customerSave リンクのクリック ハンドラーでプレーンなJquery Ajax POSTを使用することもできます。

于 2013-06-03T21:17:43.763 に答える
0

Html.ActionLink はアンカー タグを作成しますが、これらは GET のみです。

Ajax.ActionLink を使用してみてください。

<%: Ajax.ActionLink("Save", "CustomerSave","Customer",new {custid = 101 }, new AjaxOptions{ HttpMethod="Post"})%> 
于 2013-06-04T10:06:23.080 に答える