2012-03-04 12 views
3

として認識されていなかった私はもともと下記のとおりビュー内のいくつかのチェックボックスを生成していました:ビュー生成するエラーメッセージ:文字列は、管理者ページ内の有効なブール

モデル:

public class Foo 
{ 
    public const string Bar = "SomeString"; 
} 

ビュー:

@Html.CheckBox(Foo.Bar) 
@Html.Label(Foo.Bar) 

しかし、私は、チェックボックスのいくつかの表示名を変更したいので、私は(後に表示名属性を追加するために)ビューモデルを作成しました:

チェックボックスをレンダリングするとき

@Html.CheckBox(Model.Bar) 
@Html.LabelFor(m => m.Bar) 

しかし、ビューは現在、エラーを生成している:

public class FooViewModel 
{ 
    public string Bar 
    { 
     get { return Foo.Bar; } 
    } 
} 

とは、ビューを変更

文字列は有効なブール

として認識されませんでした

ビューモデル内のプロパティ名を「バー」以外に変更すると、 wが正しく表示されます。 EG:

public class FooViewModel 
{ 
    public string WTF 
    { 
     get { return Foo.Bar; } 
    } 
} 

@Html.CheckBox(Model.WTF) 
@Html.LabelFor(m => m.WTF) 

私のviewmodelプロパティは「バー」と命名されている場合、このエラーが発生している理由は誰もが私に説明できますか?

編集: 少し質問が更新されましたが、私は混乱を起こしています。ビューは検索フォームとして使用され、チェックボックスは単に「検索基準」の選択に使用されます。

チェックボックスの名前/ IDがコントローラ内の対応するビジネスロジックに関連するように、この方法でチェックボックスを生成しています。

同じクラス内のプロパティ名/フィールド名が同一である場合、コードはコンパイルされないことに気付いています。これは問題ではありません。異なる名前空間内の定数からプロパティを初期化するだけです。別のチェックボックスのコンストラクタを使用して

+0

@ChrisFいや、そのパラメータは以下のようになり、文字列ます。http:// msdn.microsoft.com/en-us/library/dd460245.aspx –

+1

@Shark - ああありがとう - 私はこのことをしてからしばらくしています。コメントは削除されました。 – ChrisF

+0

プロパティを「静的」なものとして参照していますか?どのようにコンパイルされましたか? –

答えて

0

は、問題を解決します:あなたはBarと呼ばれる定数とBar呼ばれるプロパティことはできません

@Html.CheckBox(Model.Bar, false) 
@Html.LabelFor(m => m.Bar) 
+2

私はあなたのやろうとしていることをまだ得ていません。 CheckBoxは文字列ではなく、 'bool'にバインドする必要があります。 '@ H​​tml.CheckBoxFor(model => model.SomeBooleanProperty)' – RPM1984

1

public class Foo 
{ 
    public const string Bar = "SomeString"; 

    public string Bar 
    { 
     get { return Foo.Bar; } 
    } 
} 

をこの特定のコードスニペットは、C#とウォン」は無効ですさらにコンパイルする。

これは、ASP.NET MVCのヘルプがブール値で動作していると言われています。だから私は実際に文字列のプロパティとこのBar文字列定数の目的にバインドしようとしている理由を理解できません。

正しい次のビューモデルを持っているだろう:

public class MyViewModel 
{ 
    [Display(Name = "som estring")] 
    public bool MyBoolValue { get; set; } 
} 

と強く型付けされたビューで

@Html.LabelFor(x => x.MyBoolValue) 
@Html.CheckBoxFor(x => x.MyBoolValue) 
+0

ダーリンに感謝します。あなたが私が引き起こしていた混乱を避けるために少し質問を更新しました。このプロパティは、異なる名前空間にあるクラスの定数値から単純に初期化されています。あなたの例と同じクラスにはありません。 – Jesse

関連する問題