2010-08-13 62 views
24

Tôi có thể đã lỗi thời, nhưng một nguyên tắc tôi tuân thủ là tránh null càng nhiều càng tốt. Tuy nhiên những gì tôi đã tìm thấy là cho một cái nhìn mạnh mẽ gõ trong đó người dùng đầu vào các thuộc tính của một đối tượng tôi muốn lưu, nếu một số lĩnh vực không được nhập chúng được gán là null.Cách đặt giá trị mặc định của chuỗi trống TextBox thay vì null

Sau đó, khi bạn cố gắng lưu thay đổi, xác thực không thành công.

Vì vậy, thay vì đặt từng thuộc tính thành chuỗi trống, làm cách nào tôi có thể tự động đặt từng Hộp văn bản trên biểu mẫu thành mặc định thành chuỗi trống thay vì một giá trị rỗng?

+0

Tôi luôn cảm thấy tránh null càng nhiều càng tốt một điều kỳ lạ càng tốt . Null là một điều tuyệt vời. Trong một hàng bản ghi bảng cơ sở dữ liệu có một cột nullable và nó là null nó có nghĩa là không có giá trị nào được cung cấp trước đây. Kiến thức này rất quan trọng đối với các quy tắc kinh doanh và logic cho các công ty mà tôi đã tìm thấy thời gian và thời gian một lần nữa. –

+0

Tôi có thể thấy các giá trị rỗng hữu ích khi tính trung bình cho một dải số. Cũng null là tốt cho những ngày chưa được nhập. Nếu không thì tại sao một null tốt hơn một chuỗi rỗng hoặc một số không? Tất cả nó dường như làm là tạo ra nhiều mã tấm nồi hơi để ngăn chặn ngoại lệ không mong muốn nullreference. – arame3333

+0

Đó là một điểm tốt, mặc dù thay vì kiểm tra null ở hầu hết các địa điểm tương tự, để ngăn chặn các ngoại lệ tham chiếu null không mong muốn, bạn đang kiểm tra nếu! EmptyString). Các ngoại lệ tham chiếu null trở nên cũ nhưng chúng có thể là "mức độ kiểm soát/kiểm tra chất lượng" tốt. Rỗng chuỗi đi, không có ngoại lệ, nhưng nó không nên có sản phẩm nào, null cháy một ngoại lệ và do đó một nhà phát triển phát hiện ra lỗi nhanh hơn có lẽ. Buồn cười, tôi ghét nhìn thấy các cột chuỗi rỗng trong Sql Chọn kết quả lol –

Trả lời

52

Bạn có thể đặt thuộc tính sau trên chuỗi tài sản của bạn trong mô hình của bạn:

[DisplayFormat(ConvertEmptyStringToNull=false)] 

Vì vậy, bất cứ khi nào ai đó đăng mẫu với trống ô văn bản, đây sẽ là một chuỗi rỗng thay vì null ...

+0

nó là, những gì tôi đang tìm kiếm. Thanx @Yngve B. Nilsen –

2

Thành thật mà nói, tôi muốn nói phương pháp mã hóa của bạn đã lỗi thời và thiếu sót. Bạn nên xử lý mọi khả năng, nó không khó. Đó là chính xác những gì string.IsNullOrEmpty(value); là dành cho.

Tôi đoán logic xác nhận của bạn là một cái gì đó như:

if (value == string.Empty) { isValid = false; } 

Vì vậy, nó không xử lý các giá trị null. Bạn nên thay thế kiểm tra đó để nó cũng kiểm tra các giá trị rỗng.

string value1 = null; 
string value2 = string.Empty; 

string.IsNullOrEmpty(value1); // true 
string.IsNullOrEmpty(value2); // true 
+0

Tôi có thể thấy câu hỏi của mình không rõ ràng. Tôi đang tìm câu trả lời để làm với siêu dữ liệu hoặc mẫu mở rộng. Đây là một câu hỏi MVC chứ không phải là câu hỏi C#. – arame3333

+0

Đăng một số mã trong câu hỏi của bạn để chúng tôi có thể xem bạn đang làm gì. – GenericTypeTea

+0

Tôi không chắc chắn mã nào tôi có thể hiển thị cho bạn. Tôi có một số TextBox trong một View, và nếu người dùng không nhập một giá trị trước khi submit, chúng sẽ mặc định là null. Nếu các trường trong mô hình cơ bản là NOT nullable, điều này làm cho việc xác thực thất bại. Tôi đã tìm thấy câu trả lời dựa trên câu hỏi này trên SO; http://stackoverflow.com/questions/1718501/asp-net-mvc-best-way-to-trim-strings-after-data-entry-should-i-create-a-custom Thay vì cắt tỉa tôi chỉ đặt một chuỗi rỗng thành một chuỗi rỗng. Tôi hài lòng với câu trả lời này, nhưng có lẽ có một câu trả lời dễ dàng hơn? – arame3333

1

Tôi đã gặp vấn đề này khi giao dịch với một dịch vụ cũ yêu cầu các chuỗi rỗng. Tôi tạo ra một phương pháp khuyến nông:

public static string GetValueOrDefault(this string str) 
     { 
      return str ?? String.Empty; 
     } 

Vì vậy, bạn có thể sử dụng khi bạn muốn chắc chắn rằng bất kỳ chuỗi đang rỗng trở nên trống rỗng

yourString1.GetValueOrDefault(); 
yourString2.GetValueOrDefault(); 
Các vấn đề liên quan