Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/266.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 如何使用Html.TextBoxFor设置默认值?_C#_Asp.net Mvc 2_Html Helper - Fatal编程技术网

C# 如何使用Html.TextBoxFor设置默认值?

C# 如何使用Html.TextBoxFor设置默认值?,c#,asp.net-mvc-2,html-helper,C#,Asp.net Mvc 2,Html Helper,简单的问题是,如果使用ASP.NET MVC Framework 1中的Html帮助程序,很容易在文本框上设置默认值,因为存在重载Html.textbox(字符串名称、对象值)。当我尝试使用Html.TextBoxFor方法时,我的第一个猜测是尝试以下不起作用的方法: <%: Html.TextBoxFor(x => x.Age, new { value = "0"}) %> x.Age,新的{value=“0”})%> 我现在应该继续使用Html.TextBox(字符串、

简单的问题是,如果使用ASP.NET MVC Framework 1中的Html帮助程序,很容易在文本框上设置默认值,因为存在重载
Html.textbox(字符串名称、对象值)
。当我尝试使用Html.TextBoxFor方法时,我的第一个猜测是尝试以下不起作用的方法:

<%: Html.TextBoxFor(x => x.Age, new { value = "0"}) %>
x.Age,新的{value=“0”})%>

我现在应该继续使用Html.TextBox(字符串、对象)吗?

默认值将是
Model.Age
属性的值。这就是关键所在。

事实证明,如果您不在控制器中为视图方法指定模型,它就不会为您创建具有默认值的对象

[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"}) %>
x.Age,新的{@Value=“0”})%>

这应该适用于MVC3和MVC4

 @Html.TextBoxFor(m => m.Age, new { @Value = "12" }) 
如果希望它是一个隐藏字段

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

如果您有一个用于编辑和添加的部分页面表单,那么我将默认值设置为
0
的技巧是执行以下操作:

@Html.TextBox("Age", Model.Age ?? 0)
这样,如果未设置,则为
0
,如果存在,则为实际年龄。

您只需执行以下操作:

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

也可以尝试这个方法,即删除新的{}并用字符串替换它

<%: Html.TextBoxFor(x => x.Age,"0") %>
x.Age,“0”)%%>

使用
@Value
是一种攻击,因为它输出两个属性,例如:

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

我是这样解决的。如果您也使用此选项进行编辑,则此选项有效

@Html.TextBoxFor(m => m.Age, new { Value = Model.Age.ToString() ?? "0" })
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.Id, new { @Value = "" })
这是我的工作

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


想知道为什么大写字母“V”有效而小写字母“V”无效吗?此外,此解决方案会覆盖年龄的模型值,即使存在。带小v的值是C#的关键字。所以我认为这就是它不起作用的原因。对评论投了赞成票,因为对一个如此晦涩和有见地的答案投了一票。。。不充分。令人好奇的是@value不起作用。readonly也是C#的一个关键字,但@readonly的工作没有任何问题。浏览器中的html源代码是在使用@Value时生成的。输入标记中既有带“0”的“Value”,也有带“0”的“Value”。当模型管理默认值时,这似乎是个坏主意。当不同的默认值需要相同的模型项集合时,应该怎么做?@RredCat同意,这会混淆UI层的分离。对于隐藏字段,只需使用@Html.HiddenFor(m=>m.Age,new{@value=“12”})好的@Html.HiddenFor(m=>m.Age,new{@value=“12”})不是wokringAnd为什么要像这样隐藏硬编码的默认值?非感官年龄是一个整数,这是行不通的;它需要是一个可为null的int。更有可能是MVC的bug或特性,因为Html.PasswordFor(m=>m.Password,new{class=“form control”,value=“default”被渲染成几乎相同的Html,“default”转到成功显示的值。例如,value=Model.Email起作用,但value=ViewBag.Email起作用。因此,这个被接受的答案更好、更清晰,而不是太刻薄。什么是
讲师
?虽然这段代码可以回答问题,但最好包含一些上下文,解释它是如何工作的以及何时使用它。仅代码答案从长远来看是没有用的。@Bono添加了一些注释,如果年龄为null。。您将得到一个null指针异常,因为??将尝试检查ToString()的返回。@eaglei22 Nullable.ToString()如果值为null,则将返回空字符串。感谢您演示如何在匿名对象中建模绑定使用此x.Age,new{value=“0”})%>,在值中进行小的更改V大写字母。+1表示命名参数,该参数在复制/可复制代码中特别有用,并且使用具有许多重载的方法
@Html.TextBoxFor(m => m.Id, new { @Value = "" })
@Html.TextBoxFor(model => model.Age, htmlAttributes: new { @Value = "" })