2017-02-14 5 views
4

私は剃刀のビューをもう少しダイナミックにしようとしています。 テーブルのTDにインラインスタイルを設定しようとしています。c#の文字列をhtmlの属性として

私は、文字列作っ:

@{ 
    double width = 100/5; 
    String widthStyleString = String.Format("style=\"width: {0}%;\"", width); 
} 

私はプレーンテキストとしてそれをテストしたときに大きな働きました。私が得た:

<td class="table--td" style="&quot;width:" 20%;&quot;="">Some Value</td> 

どのように私はそれが「実体としての解析ないようになるだろう(それはないだろう?私は、HTML要素の中にそれを置くしようとしたときに

style="width: 20%;" 

は、しかし、私はこれを得ましたこれは、


更新)」私は実際にそれをせずに& QUOTを入力してみましょうまだHTMLの属性を行う良い方法です。しかし、この例では、それはスタイルタグであり、人々のコメントは正しい。それはCSSではなくロジックで行う方が良いです。この正確な問題(スタイル属性)がある場合は、以下のスタックポストが役立ちます。さもなければ、Html.Raw()は良いです。あなたは以下IE8と心配する必要がない場合は、リンクは、この問題を解決する

Equal sized table cells to fill entire width of holding table

。それ以外の場合は、CSSの幅のパーセンテージをハードコーディングする必要があります。

+5

htmlをhtmlにしてコードにコードを残してください: '一部の値' – LocEngineer

+0

私はこれを元来しましたが、私の要素では、CSSで行うことはできません。私はこれがよりクリーンなマークアップを作るだろうと思った。 – Christian4423

答えて

8

@機能は、HTML出力をエンコードするので、あなたは@Html.Rawを使用することができます。

<td class="table--td" @Html.Raw(widthStyleString)>Some Value</td> 

の代わり:

<td class="table--td" @widthStyleString>Some Value</td> 
+0

パーフェクト!迅速な対応をありがとう。時間が許されるとき、これを答えとして受け入れます。 – Christian4423

2

@Html.Raw()

に見てあなたは何をして、このような何かを行うことができますあなたは現在持っています:

<td class="table--td" @Html.Raw(widthStyleString)>Some Value</td> 

私はおそらく、文字列を生成するより良い方法を検討します。あなたはあなたのスタイルとあなたのコンテンツのパラメータを取るあなた自身のHTMLヘルパーを作成して、ページに出力することができます。これの利点は、コードが1か所(DRY)にあることです。

念頭に置くべきもう一つのことは、あなたがインラインスタイルを使用しているという事実です。あなたが望むものを達成するためにCSSの力を活用できる方法はありませんか?

+0

あなたは正しいです、インラインは悪い習慣ですが、私はこの1つの例外に残しています(表示以外:なし)私はCSS/Sassを他のスタイルに使用しますが、これは動的でなければならず、私は速い数学でパーセンテージを得ることができます。私はロジックをビューから完全に分離しておくことを好みます。私はhtmlヘルパーを作るために調べる必要があります。私はこれのC#の最後に新しいです、そして、それは理解するために本当にクールな部分になるでしょう。ありがとうございました! – Christian4423

+1

[This](http://www.webdevelopmenthelp.net/2014/07/custom-html-helper-in-aspnet-mvc.html)は、あなたを始めるための非常に簡単なリファレンスです – maccettura

+1

知識を共有していただきありがとうございます:) 良い一日! – Christian4423

関連する問題