簡體   English   中英

如何使用 Html.TextBoxFor 設置默認值?

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM