web-dev-qa-db-ja.com

Html.TextBoxForでデフォルト値を設定する方法?

簡単な質問ですが、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)をそのまま使用する必要がありますか?

189
dcompiled

あなたがあなたのコントローラの中で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");
}
31
dcompiled

あなたはこれを試すことができます

<%= Html.TextBoxFor(x => x.Age, new { @Value = "0"}) %>
339
Tassadaque

これはMVC3およびMVC4で機能するはずです

 @Html.TextBoxFor(m => m.Age, new { @Value = "12" }) 

隠しフィールドにしたい場合

 @Html.TextBoxFor(m => m.Age, new { @Value = "12",@type="hidden" }) 
59
Gokul

デフォルト値はあなたのModel.Ageプロパティの値になります。それがポイントの一種です。

20
Fyodor Soikin

あなたは単にすることができます:

<%= Html.TextBoxFor(x => x.Age, new { @Value = "0"}) %>

モデルがnullの場合、たとえば編集と作成の両方で同じビューがある場合など、デフォルト値の '0'に切り替わります。

@Html.TextBoxFor(x => x.Age, new { @Value = (Model==null) ? "0" : Model.Age.ToString() })
16
Chtiwi Malek

value = "0"は@ Html.TextBoxforのデフォルト値を設定します

大文字と小文字を区別する「v」は大文字にする必要があります

以下に作業例を示します。

@Html.TextBoxFor(m => m.Nights, 
    new { @min = "1", @max = "10", @type = "number", @id = "Nights", @name = "Nights", Value = "1" })
11
user1708302

@Valueを使用することは、2つの属性を出力するのでハックです。例えば:

<input type="..." Value="foo" value=""/>

代わりにこれを実行する必要があります。

@Html.TextBox(Html.NameFor(p => p.FirstName).ToString(), "foo")
8
Max Toro

これが私がそれを解決した方法です。これを編集にも使用すると、これは機能します。

@Html.TextBoxFor(m => m.Age, new { Value = Model.Age.ToString() ?? "0" })
8
user3738893

私のためのこの仕事

@Html.TextBoxFor(model => model.Age, htmlAttributes: new { @Value = "" })
6

これは私のために働いた、このように我々はデフォルト値を空の文字列に設定する

@Html.TextBoxFor(m => m.Id, new { @Value = "" })
5
eric_eri

編集と追加の両方を行うための部分的なページフォームがある場合は、デフォルト値として0を使用するためのトリックは次のとおりです。

@Html.TextBox("Age", Model.Age ?? 0)

そのように設定されていない場合は0、存在する場合は実際の年齢になります。

5
Harel Seligmann

これも試してみてください、つまりnew {}を削除してstringに置き換えます。

<%: Html.TextBoxFor(x => x.Age,"0") %>
0
Hammad Khan