我遇到了一些我确信非常简单的问题。我一直在使用Asp.Net MVC,我决定开始使用Asp.Net MVC 2.有些事情发生了变化,现在我需要一些帮助。强类型助手现在写成这样 -
<%= Html.TextBoxFor(model => model.State) %>
我需要在文本框中添加默认值。在Asp.Net MVC的早期版本中,很容易分配默认值。我认为以下操作可以在MVC 2中使用 -
<%= Html.TextBoxFor(model => model.CountyId, new{ value = 840 })%>
然而,这在Asp.Net MVC 2中对我不起作用。文本框的值仍为空白。我想确保这不是我遇到的一些随机错误。还有其他人遇到过同样的问题吗?我搜索并搜索了有关MVC 2中html助手的默认属性的更多信息,但我找不到任何东西。有没有人知道如何在Asp.Net MVC 2中正确地为文本框分配默认值?
答案 0 :(得分:9)
实际上,如果其他人遇到此问题,请使用值而不是值。我认为问题在于值与常见的 v 是一个c#关键字。
答案 1 :(得分:5)
如果它是一个常量值,您可以将默认值分配给模型中的属性(如果使用'old-style'属性,则可以在构造函数或支持字段中设置它)。类似的东西:
public class Model
{
public int CountryId { get; set; }
public Model()
{
this.CountryId = 840;
}
}
或者,如果每个请求有所不同,请将其设置在您从控制器传递到视图的视图模型中。
答案 2 :(得分:3)
行。我找到了问题的答案 - 有点像。 MVC 2中的新Html.TextBoxFor不允许使用对象htmlattributes设置value属性,即使它保留了使用此语法设置所有其他属性的能力 -
<%= Html.TextBoxFor(model => model.CountryName, new { maxlength = "40" })%>
因此,要解决此问题,如果需要在文本框字段上设置默认值,则需要使用旧语法 -
<%= Html.TextBox("CountryName", "Enter your country name")%>
这将在html中适当添加默认值属性。 新的TextBoxFor规范不能在此实例中使用,但该值仍将以与lambda表达式相同的方式返回到控制器。可以使用textboxfor(maxlength等)使用新的{whateverProperty = value}语法设置文本框的所有其他属性 - 而不是value属性。
答案 3 :(得分:1)
@Html.TextBoxFor(model => model.CountyId, new{ @value = 840 })
适用于asp.net mvc3 razor语法