2013-05-07 14 views
5

w ASP.NET MVC, napisałem poniżej kod, aby dać pole tekstowe do wartości początkowej:Wartość domyślna dla TextBoxFor w ASP.NET MVC

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

i źródło HTML jest w następujący sposób:

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

i zauważa, że ​​istnieją dwa wartości atrybutów w „wejściowego” tag: Value="0" i value=""

Jak sprawić, by to pokazać tylko jeden atrybut wartość?

Odpowiedz

7

Zastosowanie TextBox zamiast TextBoxFor

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

czy waga jest pusty ciąg

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

Cóż, wyraźnie podano: Value, a nie value.

Spróbuj:

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

Nie, że nie robi”pracy. –

+0

Pokazuje tylko wartość = "" –

1

Nietestowane, ale spróbuj TextBox zamiast TextBoxFor, ponieważ ma przeciążenia dla przekazując wartość jako drugi parametr.

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

Inną opcją jest ustawienie wartości domyślnych w konstruktorze klasy modelu, która inicjuje WEIGHT.

5

Wygląda na to, że jest to zachowanie domyślne. Jeśli naprawdę chcesz uniknąć podwójnych atrybutów wartości, lepiej postępować zgodnie ze sposobem czyszczenia, ustawiając wartość domyślną w metodzie create klasy kontrolera. Jest to zgodne z ideologią wzoru MVC.

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

    return View(newEntity); 
} 

Następnie na widoku, nie będzie trzeba używać wartość atrybutu już:

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

Twój wynikające HTML jest:

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

Może to? Nieprześcigniony.

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