2010-03-29 31 views
49

Tôi có thẻ sau với biểu thức Html.TextBoxFor và tôi muốn nội dung chỉ đọc, điều này có thể không?Tôi có thể đặt hộp văn bản thành chỉ đọc khi sử dụng Html.TextBoxFor không?

<%= Html.TextBoxFor(m => Model.Events.Subscribed[i].Action)%> 
+0

> [Đây là N Bạn có thể nhìn thấy. làm thế nào để tạo textbox chỉ đọc trong MVC] (http://www.codeshower.blogspot.in/2012/09/mvc-how-to-create-readonly-textbox-in.html) –

Trả lời

33

cập nhật cho các phiên bản hiện đại của .NET mỗi gợi ý @ 1c1cle của trong một chú thích:

<%= Html.TextBoxFor(model => Model.SomeFieldName, new {{"readonly", "true"}}) %> 

Đừng nhận ra rằng đây không phải là một cách "an toàn" để làm điều này như ai đó có thể tiêm javascript để thay đổi điều này.

Điều cần lưu ý là nếu bạn đặt giá trị readonly thành false, bạn thực sự sẽ không thấy bất kỳ thay đổi nào về hành vi! Vì vậy, nếu bạn cần phải lái xe này dựa trên một biến, bạn không thể chỉ cần cắm biến đó trong đó. . Thay vào đó bạn cần phải sử dụng logic có điều kiện để đơn giản là không vượt qua mà readonly thuộc tính trong

Dưới đây là một đề nghị chưa được kiểm tra như thế nào để làm điều này (nếu có một vấn đề với điều này, bạn luôn có thể làm một if/else):

<%= Html.TextBoxFor(model => Model.SomeFieldName, shouldBeReadOnlyBoolean ? new {{"readonly", "true"}} : null) %> 
+3

Từ điển mới () {{"readonly", "false"}} và từ điển mới () {{"readonly", "anything"}} cung cấp cùng kết quả. – 1c1cle

7
<%= Html.TextBoxFor(m => Model.Events.Subscribed[i].Action, new {readonly=true})%> 
1

Sử dụng ví dụ của @Hunter, ở phần mới {..}, thêm readonly = true, tôi nghĩ rằng sẽ làm việc.

+1

Không, điều đó đưa ra một lỗi: Cụm từ biểu thức không hợp lệ 'chỉ đọc' –

102
<%= Html.TextBoxFor(m => Model.Events.Subscribed[i].Action, new { @readonly = true })%> 
+11

điều này là đúng, nhưng @ readonly = false cung cấp kết quả tương tự cho tôi. Vì vậy, đó là giá trị của chỉ đọc mà quyết định chức năng, nhưng sự tồn tại của chính thuộc tính đó. – 1c1cle

+3

có cách nào để khắc phục điều này không? Về cơ bản tôi muốn gán động @readonly = false hoặc true trên một số biến khác (yêu cầu ngu ngốc) – rank1

4
<%: Html.TextBoxFor(m => Model.Events.Subscribed[i].Action, new { @autocomplete = "off", @readonly=true})%> 

Đây là cách bạn thiết lập nhiều thuộc tính

3

công việc này đối với tôi ...

@Html.TextBoxFor(model => model.RIF, new { value = @Model.RIF, @readonly = "readonly" }) 
0

Trong thực tế, câu trả lời của Brain Mains là gần như chính xác:

@Html.TextBoxFor(model => model.RIF, new { value = @Model.RIF, @readonly = true }) 
0

Trong trường hợp nếu bạn phải áp dụng lớp tùy chỉnh của bạn, bạn có thể sử dụng

@Html.TextBoxFor(m => m.Birthday, new Dictionary<string, object>() { {"readonly", "true"}, {"class", "commonField"} }) 

Đâu là

commonField được CSS class

Sinh nhật co trường chuỗi uld là chuỗi mà bạn có thể sử dụng để giữ jQuery Datapicker ngày :)

<script> 
      $(function() { 
       $("#Birthday").datepicker({ 

       }); 
      }); 
    </script> 

Đó là ví dụ thực tế.

0

Bằng cách đặt thuộc tính chỉ đọc thành true hoặc false sẽ không hoạt động trong hầu hết các trình duyệt, tôi đã thực hiện như dưới đây, khi chế độ của trang "tải lại", tôi chưa bao gồm thuộc tính "chỉ đọc".

@if(Model.Mode.Equals("edit")){ 
@Html.TextAreaFor(model => Model.Content.Data, new { id = "modEditor", @readonly = moduleEditModel.Content.ReadOnly, @style = "width:99%; height:360px;" }) 
} 
@if (Model.Mode.Equals("reload")){ 
@Html.TextAreaFor(model => Model.Content.Data, new { id = "modEditor", @style = "width:99%; height:360px;" })} 
1

Một khả năng khác:

<%= Html.TextBoxFor(model => Model.SomeFieldName, new Dictionary<string, object>(){{"disabled", "true"}}) %> 
8

Để làm cho nó chỉ đọc

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

Để Diable

@Html.TextBoxFor(m=> m.Total, new {@class ="form-control", @disabled="true"}) 
27

Sử dụng như sau:

@Html.TextBoxFor(m => m.Whatever, new {@readonly = "readonly"}) 

Nếu bạn muốn chỉ định một lớp cho nó, bạn có thể thực hiện theo cùng một cách, bằng cách thêm thuộc tính @class = "" . Hy vọng điều này sẽ giúp :)

+0

Điều này làm việc cho tôi. – Orion

4

Đoạn mã sau đã hiệu quả đối với tôi.

@Html.TextBoxFor(m => m.Crown, new { id = "", @style = "padding-left:5px", @readonly = "true" }) 
0
@Html.TextBoxFor(model => model.IdUsuario, new { @Value = "" + User.Identity.GetUserId() + "", @disabled = "true" }) 

@disabled = "true" 

làm việc rất tốt

Các vấn đề liên quan