簡単な質問ですが、ASP.NET MVC Framework 1のHtml Helperを使用する場合、過負荷Html.TextBox(string name, object value)
があるため、テキストボックスにデフォルト値を設定するのは簡単です。 Html.TextBoxForメソッドを使用したときの最初の推測は、うまくいかなかった次のことを試したことです。
<%: Html.TextBoxFor(x => x.Age, new { value = "0"}) %>
今のところHtml.TextBox(string、object)をそのまま使用する必要がありますか?
あなたがあなたのコントローラの中でViewメソッドにModelを指定しなければ、それはデフォルト値であなたのためのオブジェクトを作成しないことがわかります。
[AcceptVerbs(HttpVerbs.Get)]
public ViewResult Create()
{
// Loads default values
Instructor i = new Instructor();
return View("Create", i);
}
[AcceptVerbs(HttpVerbs.Get)]
public ViewResult Create()
{
// Does not load default values from instructor
return View("Create");
}
あなたはこれを試すことができます
<%= Html.TextBoxFor(x => x.Age, new { @Value = "0"}) %>
これはMVC3およびMVC4で機能するはずです
@Html.TextBoxFor(m => m.Age, new { @Value = "12" })
隠しフィールドにしたい場合
@Html.TextBoxFor(m => m.Age, new { @Value = "12",@type="hidden" })
デフォルト値はあなたのModel.Age
プロパティの値になります。それがポイントの一種です。
あなたは単にすることができます:
<%= Html.TextBoxFor(x => x.Age, new { @Value = "0"}) %>
モデルがnullの場合、たとえば編集と作成の両方で同じビューがある場合など、デフォルト値の '0'に切り替わります。
@Html.TextBoxFor(x => x.Age, new { @Value = (Model==null) ? "0" : Model.Age.ToString() })
value = "0"は@ Html.TextBoxforのデフォルト値を設定します
大文字と小文字を区別する「v」は大文字にする必要があります
以下に作業例を示します。
@Html.TextBoxFor(m => m.Nights,
new { @min = "1", @max = "10", @type = "number", @id = "Nights", @name = "Nights", Value = "1" })
@Value
を使用することは、2つの属性を出力するのでハックです。例えば:
<input type="..." Value="foo" value=""/>
代わりにこれを実行する必要があります。
@Html.TextBox(Html.NameFor(p => p.FirstName).ToString(), "foo")
これが私がそれを解決した方法です。これを編集にも使用すると、これは機能します。
@Html.TextBoxFor(m => m.Age, new { Value = Model.Age.ToString() ?? "0" })
私のためのこの仕事
@Html.TextBoxFor(model => model.Age, htmlAttributes: new { @Value = "" })
これは私のために働いた、このように我々はデフォルト値を空の文字列に設定する
@Html.TextBoxFor(m => m.Id, new { @Value = "" })
編集と追加の両方を行うための部分的なページフォームがある場合は、デフォルト値として0
を使用するためのトリックは次のとおりです。
@Html.TextBox("Age", Model.Age ?? 0)
そのように設定されていない場合は0
、存在する場合は実際の年齢になります。
これも試してみてください、つまりnew {}を削除してstringに置き換えます。
<%: Html.TextBoxFor(x => x.Age,"0") %>