ASP.Net MVC 2 - 需要在Asp.Net MVC 2中为一个强类型的Html.Textbox助手添加一个默认属性

时间:2010-04-22 21:25:30

标签: asp.net asp.net-mvc-2

我遇到了一些我确信非常简单的问题。我一直在使用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中正确地为文本框分配默认值?

4 个答案:

答案 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语法