ASP.NET - MVC - HtmlHelper - TextBox

HtmlHelper - TextBox

Lớp HtmlHelper có hai phương thức mở rộng để tạo Textbox(<input type="text'>) trong Razor là : TextBox()TextBoxFor(). Phương thức Html.TextBox () tạo phần tử <input type="text" /> với tên được chỉ định, giá trị và thuộc tính html.Html. TextBoxFor tạo ra một phần tử <input type="text'> với thuộc tính model xác định sử dụng một biểu thức lambda.

Ví dụ TextBox() và TextBoxFor():

public class Student
{
    public int StudentId { get; set; }
    [Display(Name="Name")]
    public string StudentName { get; set; }
    public int Age { get; set; }
    public bool isNewlyEnrolled { get; set; }
    public string Password { get; set; }
}

Phương thức Html.TextBox() tạo phần tử <input type = "text"> với các thuộc tính tên, giá trị và html,

Cú pháp phương thức TextBox() 

MvcHtmlString Html.TextBox(string name, string value, object htmlAttributes)

TextBox có nhiều phương thức. Vui lòng truy cập MSDN để biết tất cả TextBox().

Phương thức Html.TextBox () tạo phần tử <input type="text" /> với tên được chỉ định. Tham số tên có thể là tên thuộc tính của đối tượng. Nó liên kết thuộc tính được chỉ định với hộp văn bản.

@model Student

@Html.TextBox("StudentName", null, new { @class = "form-control" })  

Kết quả:

<input class="form-control" 
        id="StudentName" 
        name="StudentName" 
        type="text" 
        value="" />

Trong ví dụ trên, tham số đầu tiên là thuộc tính "StudentName" của lớp Student sẽ được đặt làm tên & id trong TextBox. Tham số thứ hai là một giá trị để hiển thị trong TextBox, không có giá trị trong ví dụ trên vì phương thức TextBox() sẽ tự động hiển thị giá trị của thuộc tính StudentName trong TextBox. Tham số thứ ba sẽ được đặt làm thuộc tính lớp. Tham số HtmlAttribut là một loại đối tượng, vì vậy nó có thể là đối tượng ẩn danh và tên thuộc tính sẽ là thuộc tính của nó bắt đầu bằng ký hiệu @.

Bạn cũng có thể chỉ định bất kỳ tên cho hộp văn bản. Tuy nhiên, nó sẽ không được liên kết với Model nào cả.

@Html.TextBox("myTextBox", "This is value", new { @class = "form-control" })

Kết quả:

<input class="form-control" 
        id="myTextBox" 
        name="myTextBox" 
        type="text" 
        value="This is value" />

Output in the browser


TextBoxFor

TextBoxFor tạo ra một phần tử <input type = "text"> với thuộc tính model xác định sử dụng một biểu thức lambda.

Cú pháp phương thức TextBoxFor

MvcHtmlString TextBoxFor(Expression<Func<TModel,TValue>> expression, object htmlAttributes)

Xem thêm các phương thức của TextBoxFor tại  TextBoxFor().

@model Student

@Html.TextBoxFor(m => m.StudentName, new { @class = "form-control" }) 

Kết quả:

<input class="form-control" 
        id="StudentName" 
        name="StudentName" 
        type="text" 
        value="John" />

Trong ví dụ trên, tham số đầu tiên trong phương thức TextBoxFor () là biểu thức lambda chỉ định thuộc tính StudentName để liên kết với TextBox. Nó tạo ra một thành phần văn bản đầu vào với id & name được đặt thành tên thuộc tính. Thuộc tính value sẽ được đặt thành giá trị của thuộc tính StudentName, ví dụ John. Hình dưới đây cho thấy phần tử văn bản đầu vào được tạo bởi ví dụ trên.

Sự khác biệt giữa TextBox và TextBoxFor

  • @ Html.TextBox () là phương thức không chặt chẽ trong khi @ Html.TextBoxFor () là phương thức mở rộng nên chặt chẽ hơn.
  • TextBox () yêu cầu tên thuộc tính dưới dạng tham số chuỗi trong khi đó TextBoxFor () yêu cầu biểu thức lambda tham số.
  • TextBox không cung cấp cho bạn lỗi thời gian biên dịch nếu bạn đã chỉ định tên thuộc tính sai. Nó sẽ ném ngoại lệ thời gian chạy.
  • TextBoxFor là phương thức chung vì vậy nó sẽ cung cấp cho bạn lỗi biên dịch thời gian nếu bạn đã chỉ định thay đổi tên thuộc tính hoặc tên thuộc tính sai.