2016-12-21 2 views
-1

htmlをhtmlヘルパーに置き換えようとしていますが、HTMLAttributesの辞書をCheckboxForヘルパーメソッドに渡そうとしています。私の問題は、チェックされたIDの辞書をインスタンス化するために、この式をオブジェクトのパラメータとして使用する方法を知らないということです。 HTMLはこのhtmlhelperの辞書内のチェックされたキーに@(Model.newsletterOptin?true:false)の値を渡します。

<input type="checkbox" 
    id="newsletterOptin" 
    name="newsletterOptin" 
    checked="@(Model.newsletterOptin ? true : false)" /> 

のように見えるとヘルパーは、それが適切に使用されているように、私は@(Model.newsletterOptin ? true : false)を渡すことができますどのようにこの

@Html.CheckBoxFor(m => m.newsletterOptin, new Dictionary<string, object>() { 
    { "id", "newsletterOptin" }, 
    { "checked", "@(Model.newsletterOptin ? true : false)" } 
}) 

のように見えますか?

+0

ここで何をしようとしていますか? 'CheckBoxFor()'はプロパティの値に基づいて 'checked'属性を正しく設定します(' newsletterOptin'が 'true'の場合はチェックボックスがチェックされ、そうでなければチェックされません)。 。 'checked =" true "'と 'checked =" false "'はどちらも同じです - 両方とも 'checked'プロパティを設定します - それをチェックする属性の有無有無' –

+0

'new {" id "、" newsletterOptin "}'は無意味です - CheckBoxFor()および(フォームコントロールを生成するすべての 'HtmlHelper'メソッド)は、プロパティ名に基づいて' id'属性を設定します。あなたがちょうど同じ値を既に上書きしていればそれを上書きします。 –

答えて

0

あなたのヘルパーは@という記号で始まり、ASP.NET Razorでコードブロックを開始します。他のプレーンC#コードのように書くことができるので、@を再度使用する必要はありません。

@Html.CheckBoxFor(m => m.newsletterOptin, new Dictionary<string, object> { 
    { "id", "newsletterOptin" }, 
    { "checked", Model.newsletterOptin ? "true" : "false" } 
}) 
関連する問題