0

データベースから列挙型の値を読み取り、それをモデルにバインドしています。ajaxでフォームを投稿すると、どういうわけか列挙型がバインドされていないか、モデルプロパティがnullまたはゼロになっていますが、ビューに正しく表示されます。以下にコードを掲載しました。私はentityframeworkとmvc3を使用しています

//model code constructor
public CarModel(Car car)
{
State=(CarState)car.State;
//car.State comes in as an int
//etc setting other variables
}

//CarState property
public CarState {get;set;}

//model code
@Html.DisplayFor(m=>m.CarState)

//Controller code()
Save(CarModel car)
{
//I have code that saves the changes
}

「車」に到達した瞬間、CarState には値がありません。

4

1 に答える 1

1

この値をコントローラー アクションに渡す方法は明確ではありません。一部しか表示していません@Html.DisplayFor(m=>m.CarState)が、明らかにこれはビューにラベルを表示するだけです。サーバーには何も送り返しません。何らかの値を送り返したい場合は、フォーム内の入力フィールドを使用する必要があります。

例えば:

@Html.EditorFor(m => m.CarState)

またはHiddenFor、ユーザーに編集させたくない場合はフィールドを使用します。

いずれにせよ、モデル バインダーが値を取得できると予想される場合は、その値をサーバーに送信する必要があります。モデルバインダーは魔法使いではありません。彼は価値を発明することはできません。彼はリクエストからモデルに値をバインドします。

于 2012-06-20T09:20:49.747 に答える