1

アンダースコア テンプレートで正常に動作するこの入力要素があります。

<input id="color" name="color" value="<%= color %>" />

Html.Helper代わりにメソッドを使用して要素を生成したいと考えています。

最初は基本的なヘルパーだけを試しました

@Html.TextBox("color", "<%= color %>")

しかし、それは私に与えます

<input id="color" name="color" type="text" value="&lt;%= color %>" />

value 属性をラップしてみましHtml.Rawたが、同じ結果が得られ、ヘルパー結果全体を同じものにラップしました。

ブロック全体が<script type="text/template">タグでラップされます。

に変換<されるのはなぜ&lt;ですか?どうすれば停止できますか?

これは機能しますが、少し面倒です

@MvcHtmlString.Create(Html.TextBox("color", "<%= color %>").ToString().Replace("&lt;", "<"))
4

1 に答える 1

0

コード ビハインドから提供される色を使用しようとしている場合は、ビューにバインドされているモデルに Color プロパティを配置する方がよいのではないでしょうか? 次に、次を使用できます。

public class MyModel
{
    public string ColorField {get;set;} //not sure whether you wanted string color or hex color here.  CHange it as necessary
    //also add whatever else you need the UI to bind to
}

コントローラーでは、モデルをセットアップするときに、デフォルト値を入力します。

public ViewResult MyViewName()
{
     MyModel model = new MyModel { ColorField = "blue"; // or hex color / etc.}
     //add other initialization here
     return View(model);
}

それからあなたの見解で

@model MyModel

@Html.TextBoxFor(model=>model.ColorField, "color")

従来の ASP.NET 構文と Razor 構文を混在させているように見えますが、MVC で ASP.NET 構文を使用したことがないため、間違っている可能性があります。古いものから完全に切り離したかったのです。

とにかく、私が上で説明した方法は、フォームフィールドに常にデフォルト値を設定する方法であり、うまく機能します.

于 2012-10-22T20:07:03.697 に答える