0

コントローラーにこれらの両方のアクションがあります。

   public ActionResult Admin()
    {
        var aux=db.UserMessages.ToList();

        return View(aux);         

    }

    public ActionResult Admin(int id)
    {
        var aux = db.UserMessages.ToList();

        return View(aux);

    }

しかし、「localhost/Doubt/Admin」にアクセスしようとすると、あいまいであるというメッセージが表示されます...理由がわかりません... URLにIDがない場合、最初のアクションを呼び出す必要があるためですid パラメータなし

4

5 に答える 5

2

同じ動詞 (あなたの場合は GET) でアクセスできる同じコントローラーで同じ名前の 2 つのアクションを持つことはできません。2 つのアクションのいずれかの名前を変更するか、HttpPostPOST 要求のみがアクセスできるようにする属性で装飾する必要があります。どうやらそれはあなたが望んでいるものではないので、2番目のアクションの名前を変更する必要があると思います.

于 2013-04-02T05:55:29.957 に答える
0

ユーザーがページを表示するときは GET リクエストであり、ユーザーがフォームを送信するときは通常 POST リクエストです。メソッドが対応する要求のみを処理するようにアクション メソッドHttpGetを制限します。HttpPost

   [HttpGet]
    public ActionResult Admin()
    {
        var aux=db.UserMessages.ToList();

        return View(aux);         

    }

    [HttpPost]
    public ActionResult Admin(int id)
    {
        var aux = db.UserMessages.ToList();

        return View(aux);

    }

あなたの場合get、2 番目のメソッドへのリクエストが必要な場合は、メソッドの名前を変更することをお勧めします。

于 2013-04-02T05:55:09.613 に答える
0
As you have define two action method with same name,it get confuse about which method to call.
so of you put request first time and in controller you have two method with same name than it will show error like you are currently getting due to it try to find method with attribute HttpGet,but you have not mention that attribute on action method,now when you post your form at that time it will try to find method with HttpPost attribute and run that method,so you have to specify this two attribute on same method name  
    Try this
    [HttpGet]
    public ActionResult Admin()
        {
            var aux=db.UserMessages.ToList();

            return View(aux);         

        }
    [HttpPost]
        public ActionResult Admin(int id)
        {
            var aux = db.UserMessages.ToList();

            return View(aux);

        }
于 2013-04-02T05:55:21.537 に答える