0

テキスト フィールドのみの単純なフォームを使用して、アクション メソッドで使用される情報を取得して、のアクション メソッドにリダイレクトしようとしています。コンテキストは次のとおりです。

指定された回数「moo」を出力するglobal.asax.csファイルにマップされたルートがあります。たとえば、「www.cows.com/Moo8」と入力すると、「Moo」が 8 回出力されます。数字は任意で、URL の数字として「Moo」がいくつでも表示されます。また、次のようにホームページにフォームを設定しています。

@using (Html.BeginForm("Moo", "Web"))
{
    <text>How many times do you want to moo?</text>
    <input type="text" name="mooNumber" />
    <input type="submit" value="Moo!" />
}

フォームで送信された数値は、「Web」コントローラー (WebController.cs) のアクション メソッド「Moo​​」に送信する必要があります。

 [HttpPost]
        public ActionResult Moo(int mooNumber)
        {
            Console.WriteLine(mooNumber);
            return RedirectToAction("ExtendedMoo", new { mooMultiplier = mooNumber });           
        }

最後に、「Moo」アクション メソッドによって元の「www.cows.com/Moo8」ページに戻るはずです。上記のように、既存のアクション メソッド「ExtendedMoo」を単純に使用しました。

 public ViewResult ExtendedMoo(int mooMultiplier)
        {
            ViewBag.MooMultiplier = RouteData.Values["mooMultiplier"];

            return View();
        }

フォームで送信された値にアクセスして、「ExtendedMoo」への最後の呼び出しで使用するにはどうすればよいですか?

4

4 に答える 4

0

この投稿またはこのを参照すると、ルーティングがどのように機能するかがわかります。に何か問題があり"www.cows.com/Moo8"ます。見つけてみてください。ヒント"{controller}/{action}/{parameter_or_id}"

于 2012-02-03T05:31:53.333 に答える
0

私が正しく理解していれば

フォームコレクションを使用して、テキストボックスから値を取得できます。

入力タグに id プロパティと name プロパティの両方が含まれていることを確認してください。そうしないと、フォーム コレクションで使用できません。

    [HttpPost]
    public ActionResult Moo(int mooNumber, **formcollection fc**)
    {
        **string textBoxVal= fc.getvalue("mooNumber").AttemptedValue;**
        Console.WriteLine(mooNumber);
        return RedirectToAction("ExtendedMoo", new { mooMultiplier = mooNumber });           
    }
于 2014-03-14T23:41:50.740 に答える
0

ああすごい。フォームがホームページにあることが判明したため、アクション メソッドとして「Moo」を使用する代わりに、「ホームページ」アクション メソッドを [HttpPost] アノテーションでオーバーライドする必要がありました。フォームがレンダリング元のページに送信されたことに気づきませんでした。これは、この問題を解決する上で非常に役立つ情報でした。

助けてくれてありがとう!

于 2012-02-03T07:55:22.900 に答える
0

の代わりに、 URL をRedirectToAction使用して作成します。Redirectこれでうまくいくはずです:

return Redirect(Url.RouteUrl(new { controller = "Web", action = "ExtendedMoo", mooMultiplier = mooNumber }));

私が助けてくれることを願っています。

于 2012-02-03T05:54:09.667 に答える