2009-06-24 13 views
1

私はASP.Net MVCで本当に奇妙な問題があります。Asp.Net MVC - 奇数フォーム/コントローラの問題

私は3つのテキスト値をcreate userというアクションメソッドにポストしているフォームを持っています(簡単に言うと、以下のようになります)。

public ActionResult CreateUser(string FirstName, string LastName, string Email) 
    { 
     var s = FirstName + LastName + Email; 

     return RedirectToAction("Index"); 
    } 

言っても、私のフォームは私のアクションメソッドで今すぐ

<% using (Html.BeginForm("CreateUser", "User")) 
    { %> 

    <%=Html.TextBox(("FirstName")) %> 
    <%=Html.TextBox(("LastName")) %> 
    <%=Html.TextBox(("Email")) %> 

    <div><input type="submit" value="Submit" /></div> 

<% } %> 

で、ユーザーのコントローラ上で、値のFirstName、LastNameのと電子メールはすべてNULLであります!

しかし、別のコントローラ(ゲーム)に同じメソッドをコピーしてそこにポストするようにフォームを更新すると、メソッドの値はnullになりません!私はこの1つで完全に困惑しています。

両方のコントローラは同じです - 彼らは、同じ基本クラスを継承するなど、それらに適用され、同じ属性

EDITを持っている:それは(根本的な問題が何だったかわからない)働いて手に入れました。

ユーザーコントローラーのIndexメソッドにカスタム属性がありました(これは基本的にHttpContext.Current.User.Identity.Nameプロパティを解析し、メソッドに自動的に渡しました)。何らかの理由で、これはIndexメソッドで問題になりました。一度削除すると、意図したとおりにすべてが動作するようになりました!

これは前に私のインデックスの方法であった:

[Authorisation] 
public Action Index(string userName){...} 

public Action Index() {...} 
+0

奇妙です。 Firebugのポスト値を調べようとしましたか? – Damien

答えて

0

CreateUser内のブレークポイントを追加してのRequest.Form(またはのQueryString)の内容を見てみますか、 ValueProvider。キーは異なる場合があります。

+0

UserのValueProviderには、それぞれ "Users"、 "Index"、 ""という値を持つ3つの値(コントローラ、アクション、ID)があります( "Users"、 "CreateUser"ゲームコントローラに投稿するためにスイッチを切り替えると、値が「Jamie」、「Game」、「Game」の4つのValueProvider(「FirstName」、「Controller」、「action」、「id」) CreateUser "と" ")、期待どおりに動作します。 コントローラを変更するだけでValueProviderが異なる理由がわかりません。私はユーザーからユーザーにコントローラの名前を変更しようとしましたが、結果は同じです.... – Jamie

1

(ユーザーがあなたが投稿したコントローラを変更したときに働く)音は、おそらく「User」が何らかの予約語であることと関係しているでしょう。

ユーザーはasp.netフレームワークで現在のIPrincipalオブジェクトを参照するために使用されます。

だから、コントローラの名前を別のものに変更してください。

HTHs、 チャールズ