2009-04-23 19 views
2

値戻るバインディング:私のアクションを呼び出すときにモデルバインディングが機能しない理由ASP.Net MVCモデルがNullには、次のマークアップを考えると

<form method="post" action="/home/index"> 
    Username: 
    <%= Html.TextBox("UserName")%> 
    Password: 
    <%= Html.TextBox("Password")%> 
    <input id="login" type="button" value="Login" /> 
    <input id="Submit1" type="submit" value="submit" /> 
</form> 

はあなたが私に言うことができます:

[AcceptVerbs(HttpVerbs.Post)] 
    public ActionResult Index(string UserName, string Password) 
    { 
     //UserName and Password are null! Why?    
    } 

編集: をフォームの値が転記されています。 Request.Formプロパティを調べると、正しい値が投稿されていることがわかります。

? Request.Form {ユーザー名= SDF &パスワード= SDF} [System.Web.HttpValueCollection]:{ユーザー名= SDF &パスワード= SDF} 基地{System.Collections.Specialized.NameObjectCollectionBase} {ユーザー名= SDF &パスワード=自衛隊} AllKeys:{文字列[2]}

+0

あなたのコントロール(Html.TextBox(「ユーザー名」))にnameプロパティを追加し、私はあなたが正しいアクションがフォームを投稿した後にヒットされていることを確認してくださいと仮定? –

+0

はい、フォームを送信した後、正しいアクションが呼び出されています。 –

+0

それは変です。私は正確なコードが私の前で働いています。おそらく別のモデルバインダーを使用していますか? –

答えて

0

スティーブ私は同様の問題を抱えていたと私は、モデルバインダーが好きではない私のモデルのプロパティキーと値を持っていたので、私はそれがあることが判明。

UserNameをuserとPasswordに変更して渡し、問題がまだ存在するかどうかを確認してください。

0

これを実行すると、ボンネット/ボンネットの下で何が起こっているのかを見るために、デバッガをMVCソースに接続できます。

1

バインド属性をパラメータに追加しようとしましたか?

[AcceptVerbs(HttpVerbs.Post)] 
public ActionResult Index([Bind]string UserName, [Bind]string Password) 
{ 
    //UserName and Password are null! Why?    
} 
1

私は同様の問題を抱えていました。フィールドの名前付けが原因であることが判明しました。投稿されたとき

<form method="post" action="/company/update/3"> 
    Name: 
    <%= Html.TextBox("Company.Name")%> 
    FEIN: 
    <%= Html.TextBox("FEIN")%> 

    <input type="submit" value="submit" /> 
</form> 

[AcceptVerbs(HttpVerbs.Post)] 
public ActionResult Index(int id, Company company) 
{ 
    //Company.FEIN is null! 
} 

これはCompany.Name投稿最初の値である場合に起こるようです。

0

関連する問題