2016-09-10 11 views
3

コントローラ側私は値がboolの場合、ビューバックを使用して非表示フィールドの値を設定できません。

ViewBag.CanAddNewStudent = Convert.ToBoolean(Request.Cookies["SignInOption"]["Can Add New Student"].Split(',')[0]);

を持っているし、ビュー側で私が代わりにブール値の値=「値」を取得ここで隠しフィールドに

<input type="hidden" id="HiddenCanAddNewStudent" value="@ViewBag.CanAddNewStudent"> 
     <label>@ViewBag.CanAddNewStudent</label> 

として隠しフィールドを取ります。 enter image description here

+0

iの値を文字列として渡すとき、それが可能である ViewBag.CanAddNewStudent = Request.Cookies [」 SignInOption "] ["新しい学生を追加できます "] Split( '、')[0]; ブール値の問題点を理解できません。 @ Html.Hidden( "HiddenCanAddNewStudent"、(bool)ViewBag)CanAddNewStudent)また、唯一の問題は

答えて

2

これは、条件付き属性と呼ばれるRazor V2に導入された機能の残念な副作用です。プロパティの値がboolである場合には、属性を繰り返すことになりますと、このようなcheckedまたはあなたがbool値を使用することができ、値がtrueであれば、それはchecked="checked"またはdisabled="disabled"を生成し、その値であればしますdisabledなどの属性で使用するために設計されていますfalseの場合、属性は省略されます。

は、あなたはまた、id="HiddenCanAddNewStudent"属性に加えてname="HiddenCanAddNewStudent"属性が含まれます

@Html.Hidden("HiddenCanAddNewStudent", ViewBag.CanAddNewStudent) 

を使用することができ、非表示の入力を生成するためにCleaner Conditional HTML Attributes In Razor Web PagesApplying Conditional Attributes in ASP.NET MVC Views

にこの機能の詳細を読むことができます。しかし、これを処理するMVCの方法は、あなたのブール

public bool CanAddNewStudent { get; set; } 

のプロパティを含むビューモデルを使用して、ビューで、その後、ビューにモデルを渡す前に、そのプロパティの値を設定することです

@Html.HiddenFor(m => m.CanAddNewStudent) 
+0

ありがとうございます –

0

ブール値は、通常、HTML(チェックボックスなど)でどのように機能しますか - 論理値は属性値の値ではなく、その存在によって表されます(タグにこの属性がある場合、真、そうでなければ偽)。このロジックが隠しフィールドに適用されるのは本当に奇妙ですが、フレームワークはおそらくこのように動作します。

とにかく、ブール値を文字列に変換し、この文字列をフィールドに割り当てることをお勧めします。その性質上、隠されたフィールドの値は文字列でありブール値ではありません。

+0

です。私は文字列値を渡すときにコメントで述べたように動作していますが、 "Hidden Fields"の奇妙な動作を理解できません。 –

0

ビューの最上部には、のブール値変数が保存され、ビューバック値が保存され、その変数が非表示フィールドに渡されます。

@{ 
    bool _canAddNewStudent=Convert.ToBoolean(Viewbag.CanAddNewStudent); 
} 

<input type="hidden" id="HiddenCanAddNewStudent" value="@_canAddNewStudent"> 
0

ビュー(HTML)ViewBag.CanAddNewStudentの

<label id="HiddenCanAddNewStudent" style="display:none;">@ViewBag.CanAddNewStudent</label> 

jQueryの $('#HiddenCanAddNewStudent').text(); //値

関連する問題