2011-09-26 4 views
7

のそのテキストエリアは、私は奇妙な問題を抱えている、それは過去数時間のために私をイライラされています。私は何か関連するものを見つけることができません。おそらく私はそれを正しく言い方がわからないので、十分に具体的ではない、またはそれは奇妙な独特の問題です。nullであるかどうか

ユーザーは、すべてが1つのテキストエリアを除いて、それが必要として働いて、自分のアカウント情報を更新することで埋めフォームがあります。フォームがPOSTされると、このテキスト領域(プロパティCommentsUserInfo)の値はnullになります。 Commentsプロパティはnullの唯一のプロパティです。

それは
Aを発生する)既存の値は、ユーザは、プロパティがnullの場合、値を入力します。
B)既存の値で、ユーザーは何か/何も変更しません。プロパティはnullです。

は、私が唯一のクリーンでシンプルなものを維持するために、関連するコードが含まれます。うまくいけば十分です。

コントローラのアクション

public ActionResult Edit_Information(long id) 
{ 
    // Get user info from the database. 
    // Return the view with the user info from the DB etc. 
} 

[HttpPost] 
public ActionResult Edit_Information(long id, UserInfo userInfo) 
{ 
    if (!this.ModelState.IsValid) 
    { 
     // Invalid 
     return View(userInfo); 
    } 

    // Update the information in the DB. 

    // Redirect the user back to their account. 
} 

レイザービューHTML

<div style="width: 700px; margin-left: auto; margin-right: auto; text-align: left"> 
@Html.ValidationMessageFor(x => x.Comments) 
</div> 
@Html.Partial("~/Views/Shared/_EditorSmiles.cshtml") 
@Html.TextAreaFor(x => x.Comments, new { @class = "EditorArea profile-comments" }) 

UserInfoモデル

[Validator(typeof(UserInfoValidator))] 
public class UserInfo 
{ 
    public string Comments { get;set; } 
} 

はい、モデルでFluentValidationを使用します。私はそれが原因であるかどうかを確認するために取り除いたが、そうではなかった。

物事は私がFormCollection formCollection代わりのUserInfo userInfoを使用しました、POSTアクションで

  • を試してみました。
  • 投稿時に値がnullになることを証明するPOSTアクションで例外をスローしました。
  • 新しいプロパティを別の名前で作成しました。
  • ビューを返す前に手動でプロパティに値を与えました。転記された時点で値はNULLになりました。
  • DBアクションまたはSQLアクションではないことを証明するPOSTアクションで、プロパティに値を手動で与えました。これはうまくいった。
  • モデルからFluent Validation属性を削除しました(前述)。
  • UserInfo userInfo[Bind(Prefix = "")]を使用します。これは何も変わらなかった。

私は尋ねなければならないポイントに私をイライラさせました:何が起こっているのですか?私は何か間違っているのですか?私は何かを見落とさなければならない。ページには、必要に応じて機能する別のテキスト領域があります。 Commentsのテキスト領域で、条件に関係なく常にnull値を返します。

+0

タイプUserInfoを取り出します。コメントパラメータだけがあります。それは人口ですか?フォームにコメントがあります(それはFiddlerに投稿されています)。 –

+0

完了。コメントはフォームに存在します(少なくとも私はそれを前提としています)。それはまだヌルです。私はフィドラーに精通していない、実際には、私はそれを聞いたことがない。 –

+1

恐ろしい質問かもしれませんが、ここに投稿した「コメント」の部分が正しいフォームタグの中に含まれていますか?または、あなたの視点で名前の衝突があるかもしれませんか? – Iridio

答えて

3

形はそうように巻き付けていた:

Html.BeginWindow(); 
Html.BeginForm("edit_information", "user", FormMethod.Post, new { id = "profile" }); 
<!-- other stuff goes in between here --> 
Html.EndForm(); 
Html.EndWindow(); 

Html.BeginWindow()は、フォームの周りに巻かれているテーブル(ウィンドウ)を生成します。これは明らかに、フォームの一部が適切にPOSTされないようにしていました。

Html.BeginForm("edit_information", "user", FormMethod.Post, new { id = "profile" }); 
Html.BeginWindow(); 
<!-- other stuff goes in between here --> 
Html.EndWindow(); 
Html.EndForm(); 

バム:に変更

!それは再び働いた。私はこれまで何の問題もなくこれをやっていたので、これは決して私には起こりませんでした。私はそれが修正されてうれしいです。我々はすべての間違いを犯します。

関連する問題