2013-05-07 124 views
5

Trong ASP.NET MVC, tôi đã viết bên dưới mã để cho một textbox giá trị ban đầu:Giá trị mặc định cho TextBoxFor trong ASP.NET MVC

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

Và nguồn Html được như sau:

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

tôi thông báo rằng có hai giá trị gia tăng thuộc tính trong thẻ "đầu vào": Value="0"value=""

làm thế nào để làm cho nó chỉ hiển thị một thuộc tính giá trị?

Trả lời

7

Sử dụng TextBox thay vì TextBoxFor

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

hoặc nếu trọng lượng là một chuỗi rỗng

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

Bạn đã tuyên bố rõ ràng Value, không phải value.

Hãy thử:

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

Không, điều đó không' làm việc. –

+0

Nó chỉ hiển thị giá trị = "" –

1

chưa được kiểm tra, nhưng cố gắng TextBox thay vì TextBoxFor, vì nó có một tình trạng quá tải cho đi qua các giá trị như tham số thứ hai.

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

Tùy chọn khác là đặt giá trị mặc định trong hàm tạo của lớp mô hình khởi tạo WEIGHT.

5

Dường như đây là hành vi mặc định. Nếu bạn thực sự muốn tránh các thuộc tính Value đôi, tốt hơn là làm theo cách sạch hơn bằng cách thiết lập giá trị mặc định trong phương thức create của lớp controller. Điều này theo hệ tư tưởng của mẫu MVC.

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

    return View(newEntity); 
} 

Sau đó, trên quan điểm của bạn, bạn sẽ không cần phải sử dụng thuộc tính giá trị nữa:

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

html kết quả của bạn là:

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

Có lẽ điều này? Chưa được kiểm tra.

@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" })