0

最近、プロジェクトを MVC 4 にアップグレードしました。アカ​​ウント/インデックスにログイン ページがあります。Html.BeginForm を使用すると、コントローラーのポスト アクションに到達していませんでした。

さらにいじった後、ヘルパーによって生成された HTML が次のようなものであることがわかりました。

<form action="/Account" autocomplete="off" method="post" requireSSL="true">

Html.BeginForm を次のように html に置き換えると:

<form action="/Account/Index" autocomplete="off" method="post" requireSSL="true">

ポスト アクションに正しく到達します。

私はなぜ理解できないのですか?これは、以前は MVC 3 で常に機能していました。登録されたルートは、標準の Microsoft テンプレートです。

public class RouteConfig
{
    public static void RegisterRoutes(RouteCollection routes)
    {
        routes.IgnoreRoute("{resource}.axd/{*pathInfo}");

        routes.MapRoute(
            name: "Default",
            url: "{controller}/{action}/{id}",
            defaults: new { controller = "Home", action = "Index", id = UrlParameter.Optional }
        );
    }
}

編集:

コントローラーコード:

    public ActionResult Index()
    {
        if (User.Identity.IsAuthenticated)
        {
            return RedirectToAction("RedirectUser");
        }

        return View();
    }

    [HttpPost]
    public ActionResult Index(LogOnModel model, string returnUrl)
    {
        if (ModelState.IsValid)
        {
            if (MembershipService.ValidateUser(model.UserName, model.Password))
            {
                FormsService.SignIn(model.UserName, model.RememberMe);

                if (Url.IsLocalUrl(returnUrl) && returnUrl != "/")
                {
                    return Redirect(returnUrl);
                }
                else
                {
                    return RedirectToAction("RedirectUser", "Account");
                }
            }
            else
            {
                ModelState.AddModelError("", "The user name or password provided is incorrect.");
            }
        }

        // If we got this far, something failed, redisplay form
        return View(model);
    }
4

2 に答える 2

0

あなたのルーティングは問題ないように見えますが、問題はおそらく [HttpPost] 属性が間違って使用されていることです。投稿がトリガーするアクションを指定していただければ、さらにお役に立てるかもしれません。

ブラウザーで /Account/Index と /Account/ に移動するときに違いはありますか? そうでない場合、それは間違いなく不適切に使用された属性です。

于 2012-09-19T10:38:47.333 に答える
0

ブラウザに入力しても問題ないようです。バグを報告する必要があります

于 2012-09-19T10:43:38.263 に答える