おそらくバグでしょう。再現手順:ASP.NET MVC html writerのバグ?
(1)(ASPXビューエンジン)ASP.NET MVC 3プロジェクトを作成します
(2)モデルのフォルダに移動し、新しい単純なモデル
namespace MvcApp.Models
{
public class MyModel
{
public static string MyString = "foo";
}
}
を作成します( 3)web.config
ファイルを変更し、モデルの名前空間を追加して、ビュー内でモデルを使用できるようにします。
....
</controls>
<namespaces>
<add namespace="MvcApp.Models" />
</namespaces>
</pages>
</system.web>
(4)、/Shared/Site.Master
に移動<head>
セクションを変更します。
<head runat="server">
<title><%: MyModel.MyString %><asp:ContentPlaceHolder ID="TitleContent" runat="server" /></title>
<link href="<%: MyModel.MyString %>" rel="<%: MyModel.MyString %>" />
<script src="<%: MyModel.MyString %>" />
</head>
注:ヘッドの属性はrunat="server"
です。
(5)実行して、ページのソースコードを確認します。面白い
<head id="Head1">
<title>foo Index</title>
<link href="<%: MyModel.MyString %>" rel="<%: MyModel.MyString %>" />
<script src="foo" />
</head>
何か:
私はあなたが(不要なスペースが削除されている)を取得すると思います。 link
タグのすべての属性が正しく評価されていません。エンコードされているように見えますか? title
とscript
の同じ表現は正しいですが。
b。これに3行目を変更します。
<link href="<%: MyModel.MyString %>" rel="<%: string.Format("{0}", "foo") %>" />
OR
<link href="<%: MyModel.MyString %>" rel="<%: "foo" %>" />
あなたが正しいすべてを取得します(でもhref
が正しいです!)。
c。 head
なし、runat="server"
は常に正しいです。
ビューをhtmlテキストにレンダリングするとバグだと思います。ソースコードをチェックしてバグを見つけようとするのは本当に悪夢です。誰か私に理由を教えてもらえますか?
を、私はそれが非関連の問題だと思う - それは今までにすることができた場合まったく問題とみなされました。なぜMpc用に設計されたネイティブのRazorがあり、すべての面で優れた方法で、aspx構文とWebformsの遺産である "runat = server" –
@Matteo Mosca:ASP.NET MVCで 'runat =" server "'を使うのは意味があります。そうでなければ、 ' 'でマスターページをどのように使うことができますか? –
あなたは私のコメントの半分しか読まないようです。私は剃刀について話していた。あなたはRazorにタグを使用していませんが、それは異なった(そして完全に良い)構文を持っています。 masterpagesなどのコンセプトはまだまだ違った、よりエレガントな方法です。 –