【问题标题】:Default value for TextBoxFor in ASP.NET MVCASP.NET MVC 中 TextBoxFor 的默认值
【发布时间】:2013-05-07 07:57:02
【问题描述】:

在 ASP.NET MVC 中,我编写了下面的代码来给文本框一个初始值:

@Html.TextBoxFor(p => p.WEIGHT, new { tabindex = "140", 
                                      @class = "mustInputText noime  w50", 
                                      maxlength = "8", @Value = "0", 
                                      rule = "InputOnlyNum" })

而Html源码如下:

<input Value="0" class="mustInputText noime  w50" id="WEIGHT" maxlength="8" 
    name="WEIGHT" rule="InputOnlyNum" tabindex="140" type="text" value="" />

我注意到“输入”标签中有两个 Value 属性: Value="0"value=""

如何让它只显示一个值属性?

【问题讨论】:

    标签: c# asp.net asp.net-mvc asp.net-mvc-3 razor


    【解决方案1】:

    使用 TextBox 代替 TextBoxFor

    @Html.TextBox("WEIGHT", Model.WEIGHT ?? "0", new {...})
    

    或者如果 WEIGHT 是一个空字符串

    @Html.TextBox("WEIGHT", Model.WEIGHT == "" ? "0" : Model.WEIGHT, new {...})
    

    【讨论】:

      【解决方案2】:

      这似乎是默认行为。如果你真的想避免双重Value属性,最好遵循更简洁的方式,在控制器类的create方法中设置默认值。这遵循了 MVC 模式的思想。

      //GET
      public ActionResult CreateNewEntity()
      {
          YourEntity newEntity= new YourEntity ();
          newEntity.WEIGHT= 0;
      
          return View(newEntity);
      }
      

      那么在您看来,您将不再需要使用 value 属性:

      @Html.TextBoxFor(p => p.WEIGHT, new { tabindex = "140", 
                                            @class = "mustInputText noime  w50",     
                                            maxlength = "8", 
                                            rule = "InputOnlyNum" })
      

      您生成的 html 是:

      <input class="mustInputText noime  w50" 
             id="WEIGHT" 
             maxlength="8" 
             name="WEIGHT" 
             rule="InputOnlyNum" 
             tabindex="140" 
             type="text" 
             value="0" />
      

      【讨论】:

        【解决方案3】:

        嗯,你已经明确声明了Value,而不是value

        试试:

         @Html.TextBoxFor(p => p.WEIGHT, new { tabindex = "140", @class = "mustInputText noime  w50", maxlength = "8", @value = "0", rule = "InputOnlyNum" })
        

        【讨论】:

          【解决方案4】:

          未经测试,但尝试使用TextBox 而不是TextBoxFor,因为它具有将值作为第二个参数传递的重载。

          @Html.TextBox(p => p.WEIGHT, "0",
              new { tabindex = "140", @class = "mustInputText noime  w50", 
                    maxlength = "8", @Value = "0", rule = "InputOnlyNum" })
          

          另一个选项是在初始化 WEIGHT 的模型类的构造函数中设置默认值。

          【讨论】:

            【解决方案5】:

            也许是这个?未经测试。

            @Html.TextBoxFor(p => (p.WEIGHT==null ? 0 : p.WEIGHT), new { tabindex = "140", 
                  @class = "mustInputText noime  w50", 
                  maxlength = "8",  
                  rule = "InputOnlyNum" })
            

            【讨论】:

              【解决方案6】:
                 @Html.TextBoxFor(p => p.WEIGHT, new { tabindex = "140", @class = "mustInputText noime  w50", maxlength = "8",
               @value =  model.WEIGHT==null?"0":model.WEIGHT, rule = "InputOnlyNum" })
              

              【讨论】:

                猜你喜欢
                • 1970-01-01
                • 2013-01-31
                • 1970-01-01
                • 1970-01-01
                • 2021-09-03
                • 1970-01-01
                • 2017-07-26
                • 1970-01-01
                • 2017-09-22
                相关资源
                最近更新 更多