Default value for TextBoxFor in ASP.NET MVC

前端 未结 6 1686
我寻月下人不归
我寻月下人不归 2021-01-13 09:04

In ASP.NET MVC, I wrote below code to give the textbox a initial value:

@Html.TextBoxFor(p => p.WEIGHT, new { tabindex = \"140\", 
                                


        
相关标签:
6条回答
  • 2021-01-13 09:37

    It seems to be the default behavior. If you really want to avoid the double Value attributes, it's better to follow the cleaner way by setting the default value in the create method of the controller class. This follows the ideology of the MVC pattern.

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

    Then on your view, you won't need to use the value attribute anymore:

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

    Your resulting html is:

    <input class="mustInputText noime  w50" 
           id="WEIGHT" 
           maxlength="8" 
           name="WEIGHT" 
           rule="InputOnlyNum" 
           tabindex="140" 
           type="text" 
           value="0" />
    
    0 讨论(0)
  • 2021-01-13 09:41

    Use TextBox instead of TextBoxFor

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

    or if WEIGHT is an empty string

    @Html.TextBox("WEIGHT", Model.WEIGHT == "" ? "0" : Model.WEIGHT, new {...})
    
    0 讨论(0)
  • 2021-01-13 09:44

    Well you've explicitly stated Value, not value.

    Try:

     @Html.TextBoxFor(p => p.WEIGHT, new { tabindex = "140", @class = "mustInputText noime  w50", maxlength = "8", @value = "0", rule = "InputOnlyNum" })
    
    0 讨论(0)
  • 2021-01-13 09:46
       @Html.TextBoxFor(p => p.WEIGHT, new { tabindex = "140", @class = "mustInputText noime  w50", maxlength = "8",
     @value =  model.WEIGHT==null?"0":model.WEIGHT, rule = "InputOnlyNum" })
    
    0 讨论(0)
  • 2021-01-13 09:47

    Maybe this? Untested.

    @Html.TextBoxFor(p => (p.WEIGHT==null ? 0 : p.WEIGHT), new { tabindex = "140", 
          @class = "mustInputText noime  w50", 
          maxlength = "8",  
          rule = "InputOnlyNum" })
    
    0 讨论(0)
  • 2021-01-13 09:49

    Untested, but try TextBox instead of TextBoxFor, as it has an overload for passing the value as the second parameter.

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

    The other option is to set defaults in the constructor of the model class that initializes WEIGHT.

    0 讨论(0)
提交回复
热议问题