2011-06-20 8 views
0

現在、ASP.NET MVC3のWebサイトで作業しています。MVC3 - フォーム+ POST =空のパラメーター

私はシンプルなビューモデルにバインドされた簡単な認証フォームを持っています。ローカルでデバッグするときは、すべて正常に動作します。

しかし、ウェブサイトはApache +モノモードでも動いていなければなりません。そして、ここで私が遭遇する奇妙な振る舞いがあります。同じ要求とパラメータを持つ同じ形式が動作しています。

詳細:

のviewmodel:

/// <summary> 
/// Form authentication info 
/// </summary> 
public class LogOnModel 
{ 
    /// <summary> 
    /// 
    /// </summary> 
    [DisplayName("Username")] 
    public string UserName { get; set; } 

    /// <summary> 
    /// 
    /// </summary> 
    [DisplayName("Password")] 
    public string Password { get; set; } 

    /// <summary> 
    /// 
    /// </summary> 
    [DisplayName("Remember me?")] 
    public bool RememberMe { get; set; } 

    /// <summary> 
    /// Targeted URL 
    /// </summary> 
    public string Target { get; set; } 

    /// <summary> 
    /// 
    /// </summary> 
    public LogOnModel() 
    { 
    } 
} 

ビューの主要部分、ユーザーはそのユーザー名とパスワードを入力することができますページ:

<%@ Page Title="" Language="C#" Inherits="System.Web.Mvc.ViewPage<Website.Areas.Public.Models.LogOnModel>" %> 
<p> 
    Please enter your username and password to continue. 
</p> 
<% using (Html.BeginForm()) 
    { %> 
<%= Html.ValidationSummary(true, "Authentication failed.")%> 
<p> 
    <%= Html.ActionLink("I forgot my password","PasswordRecovery","Home") %> 
</p> 
<div> 
    <fieldset> 
     <div class="editor-label"> 
      <%= Html.LabelFor(m => m.UserName) %> 
     </div> 
     <div class="editor-field"> 
      <%= Html.TextBoxFor(m => m.UserName) %> 
      <%= Html.ValidationMessageFor(m => m.UserName)%> 
     </div> 
     <div class="editor-label"> 
      <%= Html.LabelFor(m => m.Password)%> 
     </div> 
     <div class="editor-field"> 
      <%= Html.PasswordFor(m => m.Password) %> 
      <%= Html.ValidationMessageFor(m => m.Password) %> 
     </div> 
     <div class="editor-field"> 
      <%= Html.CheckBoxFor(m => m.RememberMe) %> 
      Remember me 
     </div> 
     <p> 
      <input type="submit" value="Connect me!" /> 
     </p> 
    </fieldset> 
</div> 
<% } %> 

コントローラは、認証情報を受け取っています:

[HttpPost] 
    public ActionResult LogOn(LogOnModel model) 
    { 
     string username = model.UserName; 
     string password = model.Password; 

     //On Apache, username & password are empty 
     ... 
    } 

私がコメントで言うように、ユーザ名&パスワードは空です。ローカルのASP.NETデバッグサーバーではすべて正常に動作しています。フィドラーを使用すると、認証要求にフォームデータ(ユーザー名、パスワードなど)が含まれていることがわかります。

なぜバインディングが機能していないようですか?おかげさまで

+0

HttpContext.Request.Form ["UserName"]などを使用して値を取得できます...しかし、それは私にとって非常にきれいではありません... – Valryon

答えて

0

私の答えは、数ヶ月後に見つかりました。少し遅れますが、誰かが同じ問題を抱えている場合は、ここに解決策があります。

Web.configファイルを消去します。オプションナンバーである行をすべて削除します

0

どのモノのバージョンを使用していますか?モノ(2.4または2.6)でMVC 2サイトを設定しようとすると、この問題が発生しました。私は基本的な原因がかなり複雑なモノバグ/実装の違いを超えていたことを覚えていません。MVC3/Razorはmono 2.10.2で動作しますが、期待通りに動作します。

+0

Mono 2.10.2とMVC 3を使用 – Valryon

+0

mvc 1または2を使用した場合に失敗するページには何かがありますか?モノアセンブリのバインディングは.netとは異なった働きをしますので、間違ったバージョンを使って部分的にセットアップするのはかなり簡単です。 –

+0

私は、Razorビューエンジン(まだ古いものを使用しています)を使っていないと思います。 MonoではルーティングがIISとはかなり異なるようです。私は既定のルートしか持たないので、パラメータは一致しません。 – Valryon

関連する問題