2012-01-16 10 views
3

1. 私はホームページ(ホーム/インデックス)を持っています。ここで言語を選択します。 "localhost:xxxx/Account/Index?language=en-US".RedirectToActionはURLを変更しません

3. データを入力する(:"localhost:xxxx".

2. 言語を選択したら、次は、ログインページ(アカウント/インデックス)ここで URLはこれですが、次のとおりです。 は、ここにURLはこれですユーザー名/パスワード)とログオン]ボタンをクリックし、[ユーザー/インデックスにリダイレクトが、URLはアカウント/ [ログオンに

マイフォームのまま:

<% using (Html.BeginForm("LogOn", "Account")) { %> 
<div data-role="fieldcontain" class="ui-hide-label"> 
    <label for="username">Username:</label> 
    <%: Html.TextBoxFor(m => m.Username, new { placeholder = "Username" })%>      
</div> 
<div data-role="fieldcontain" class="ui-hide-label"> 
    <label for="password">Password:</label> 
    <%: Html.PasswordFor(m => m.Password, new { placeholder = "Password" })%>     
</div> 
<fieldset class="ui-grid-a"> 
    <div class="ui-block-a"><button type="reset" data-theme="d">Reset</button></div> 
    <div class="ui-block-b"><button type="submit" data-theme="b">Log On</button></div> 
</fieldset>    
<% } %> 

アカウント・コントローラ:

[HandleError] 
public class AccountController : Controller 
{   
    public ActionResult Index(string language = "es-Es") 
    { 
    return View(); 
    } 

    [HttpPost] 
    public ActionResult LogOn(UserModel user) 
    { 
    FormsAuthentication.SetAuthCookie(user.Username, false); 
    return RedirectToAction("Index", "User"); 
    } 

    public ActionResult LogOff() 
    { 
    return View(); 
    } 
} 

のGlobal.asax:

public static void RegisterRoutes(RouteCollection routes) 
{ 
    routes.IgnoreRoute("{resource}.axd/{*pathInfo}"); 
    routes.MapRoute(
        "Default", // Route name 
        "{controller}/{action}/{id}", // URL with parameters 
       new { controller = "Home", action = "Index", id = UrlParameter.Optional } // Parameter defaults 
       ); 
} 

がどのようにURLを作成するには、次のとおりです。ローカルホスト:XXXX /ユーザー/インデックス?あなたのAccount/Index.cshtmlビューで

+1

data-ajax = "false"をフォームに追加するだけで、醜い修正を行わなくても動作します:) – gonace

答えて

5

置き換える:

@using (Html.BeginForm()) 
{ 
    ... 
} 

をして:

@using (Html.BeginForm("LogOn", "Account")) 
{ 
    ... 
} 

フォームではなく、indexアクションを提出するときに、アカウントコントローラーのLogOnアクションを呼び出すように(これは単に同じビューを返します)。ログオンで

+0

こんにちは!ご回答有難うございます。だから、私はそれを持っていると言うと、それはまだ私に同じ – user1146273

+0

@ user1146273を与える、 'LogOn' POSTアクションヒットですか?あなたのルート設定はどのように見えますか?新しいASP.NET MVCアプリケーションウィザードによって生成されたデフォルトルートを何らかの形で変更しましたか? –

+0

postメソッドはうまく動作し、パラメータを完全に取得します。私はどのウィザードも使用していません – user1146273

4

永久リダイレクトを使用:代わりにRedirectToAction、私はこの質問が既に回答されている知っているが、あなたはRedirectToRouteを使用している場合、それはより簡単になるだろう

[HttpPost] 
public ActionResult LogOn(UserModel user) 
{ 
    FormsAuthentication.SetAuthCookie(user.Username, false); 
    return RedirectToActionPermanent("Index", "User"); 
} 
+0

フォームがJqueryMobileで作成されるときに問題が発生します。私はなぜ アイデアを持っていないが、最終的に問題を特定した。皆さん、ありがとうございました! – user1146273

0

を、それはRedirectToRouteは、URLの変更を強制することが判明。

<div id="my-page" data-role="page" data-url="/myurl"> 

これは、問題を解決:あなたはjQueryのモバイルを使用している場合

0

すると、ターゲットページ上の正しいURLに設定data-url属性を持っていることを確認してください。

関連する問題