[英]How to set a default value with 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) 嗎?
試試這個:
<%= Html.TextBoxFor(x => x.Age, new { @Value = "0"}) %>
請注意, @Value
有一個大寫的V
這應該適用於 MVC3 和 MVC4
@Html.TextBoxFor(m => m.Age, new { @Value = "12" })
如果你想讓它成為一個隱藏字段
@Html.TextBoxFor(m => m.Age, new { @Value = "12",@type="hidden" })
事實證明,如果您不在控制器中為 View 方法指定模型,它不會為您創建具有默認值的對象。
[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");
}
默認值將是您的Model.Age
屬性的值。 這就是重點。
你可以簡單地做:
<%= Html.TextBoxFor(x => x.Age, new { @Value = "0"}) %>
或者更好的是,如果模型為空,這將切換到默認值“0”,例如,如果您有相同的編輯和創建視圖:
@Html.TextBoxFor(x => x.Age, new { @Value = (Model==null) ? "0" : Model.Age.ToString() })
這對我有用
@Html.TextBoxFor(model => model.Age, htmlAttributes: new { @Value = "" })
value="0" 將為 @Html.TextBoxfor 設置默認值
區分大小寫的“v”應該是大寫
以下是工作示例:
@Html.TextBoxFor(m => m.Nights,
new { @min = "1", @max = "10", @type = "number", @id = "Nights", @name = "Nights", Value = "1" })
這是我解決它的方法。 如果您也使用它進行編輯,這將起作用。
@Html.TextBoxFor(m => m.Age, new { Value = Model.Age.ToString() ?? "0" })
使用@Value
是一個技巧,因為它輸出兩個屬性,例如:
<input type="..." Value="foo" value=""/>
你應該這樣做:
@Html.TextBox(Html.NameFor(p => p.FirstName).ToString(), "foo")
這對我有用,這樣我們將默認值設置為空字符串
@Html.TextBoxFor(m => m.Id, new { @Value = "" })
如果您有一個用於編輯和添加的部分頁面表單,那么我用來將值默認為0
的技巧是執行以下操作:
@Html.TextBox("Age", Model.Age ?? 0)
這樣,如果未設置,則為0
如果存在則為實際年齡。
也試試這個,即刪除 new { } 並用字符串替換它。
<%: Html.TextBoxFor(x => x.Age,"0") %>
對於 .net core 5 中的 htmlAttributes 設置值似乎不起作用。 但您可以使用解決方法:
var ageTextBox = (TagBuilder) Html.TextBoxFor(x => x.Age);
ageTextBox.Attributes.Remove("value");
ageTextBox.Attributes.Add("value", "value you want to set");
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.