Bây giờ tôi đã xem qua ApplicationSettings trong .NET WinForms có thể xử lý các loại phức tạp.
Hiện tại tôi đang sử dụng AppSettings trong ASP.NET WebForms của tôi có thể xử lý chỉ chuỗi.
Tôi có thể sử dụng ApplicationSettings trong biểu mẫu web không? Nếu thế thì sao?Cài đặt ứng dụng kiểu tùy chỉnh trong ASP.NET
Trả lời
Ý tưởng cơ bản:
Trong một dự án khác nhau, tạo ra các lớp học mà sẽ giữ các thiết lập tùy chỉnh của bạn. Ví dụ:
public class EndPoint { public string HostName { get; set; } public int Port { get; set; } } public class EndPointCollection : Collection<EndPoint> { }
Tạo dự án chứa các lớp học.
Chuyển đến tab Cài đặt trong Thuộc tính dự án. Nó sẽ nói rằng không có tập tin cài đặt nào được nêu ra và yêu cầu nếu bạn muốn tạo nó.
Thêm tệp cài đặt mới. Trong trường loại, hãy chọn Duyệt qua và nhập tên lớp đầy đủ. Ví dụ:
ClassLibrary.EndPointCollection
. Lưu và xây dựng lại dự án.Nhấn nút chỉnh sửa cho giá trị cài đặt. (Lưu ý rằng điều này sẽ không có sẵn nếu các lớp được thực hiện trong bước trước đó là trong cùng một dự án.) Sử dụng giao diện người dùng để chỉnh sửa cài đặt.
Nếu bạn mở web.config/app.config tập tin, bạn sẽ thấy một cái gì đó như thế này:
... <applicationSettings> <WebApplication1.Properties.Settings> <setting name="MyEndPoints" serializeAs="Xml"> <value> <ArrayOfEndPoint xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema"> <EndPoint> <HostName>MyHostName</HostName> <Port>12345</Port> </EndPoint> <EndPoint> <HostName>MyHost1</HostName> <Port>1212</Port> </EndPoint> </ArrayOfEndPoint> </value> </setting> </WebApplication1.Properties.Settings> </applicationSettings> ...
Cuối cùng, để đọc các thiết lập này từ bạn mã, chỉ cần sử dụng
var endPointCollection = Settings.Default.MyEndPoints;
d esigner sẽ tạo ra, đằng sau hậu trường, các đối tượng được đánh máy mạnh mẽ để cho phép những điều trên làm việc. Bạn có thể xem chi tiết đầy đủ trong tệp
Settings.Designer.cs
.
Dòng dưới cùng: bạn có thể thực hiện tất cả các loại cài đặt loại tùy chỉnh, miễn là các cài đặt đó có XmlSerializable hoặc có trình chuyển đổi loại. Kỹ thuật này hoạt động trên các ứng dụng web, WinForms, WPF, Console ứng dụng, vv
Trong trường hợp bất kỳ ai khác không phải là nhìn thấy trình soạn thảo '...' nút lý do có thể là lớp phải ở trong một dự án khác với nơi cài đặt được đặt. Đó là cách câu trả lời được cấu trúc nhưng nó không làm rõ điểm đó. giới hạn "theo: http://msdn.microsoft.com/en-us/library/wabtadw6(v=vs.100).aspx –
Đối với những người hoài nghi với câu trả lời được đề xuất, tôi khuyên bạn nên kiểm tra câu hỏi sau/answer: http://stackoverflow.com/questions/204695/stor ing-values-in-the-web-config-appsettings-or-configsection-which-is-more ... mà đi kèm với ý tưởng tạo một phần cấu hình tùy chỉnh – Learner
@AustinThompson, tôi nghĩ rằng về mặt kỹ thuật, lớp phải ở trong một không gian tên * khác * cho dự án; nó vẫn có vẻ hoạt động nếu nó nằm trong cùng một dự án nhưng với một không gian tên khác. – Sam
Dưới đây là một biến thể của câu trả lời được chấp nhận, sử dụng lớp người dùng định nghĩa sau đây để đại diện cho một thiết lập:
namespace MyApplication
{
public class EndPoint
{
public string HostName { get; set; }
public int Port { get; set; }
}
}
Câu trả lời chấp nhận đề xuất việc sử dụng lớp sưu tập chuyên ngành, EndPointCollection
để giữ cài đặt. Tuy nhiên, tôi không nghĩ rằng điều này là cần thiết; một loại mảng (EndPoint[]
) cũng có vẻ hoạt động.
Tuy nhiên, việc nhập loại mảng trong trình duyệt loại không hoạt động; thay vào đó, bạn có thể chỉ định loại trực tiếp trong số .cài đặt tập tin (sử dụng một trình soạn thảo văn bản):
<Setting Name="MyEndPoints" Type="MyApplication.EndPoint[]" Scope="User">
<Value Profile="(Default)" />
</Setting>
Ngoài ra, nếu người biên tập giá trị thể hiện trong câu trả lời chấp nhận không có sẵn, bạn có thể thay vì gõ các giá trị trực tiếp vào lĩnh vực giá trị sử dụng XML:
<ArrayOfEndPoint>
<EndPoint>
<HostName>MyHostName</HostName>
<Port>12345</Port>
</EndPoint>
<EndPoint>
<HostName>MyHost1</HostName>
<Port>1212</Port>
</EndPoint>
</ArrayOfEndPoint>
Lưu ý rằng tờ khai gian tên XML Visual Studio tạo là không cần thiết trong XML, như ở trên.
Cũng lưu ý rằng ở trên không hoạt động đối với các thành viên của loại được tuần tự hóa mà chỉ đọc (trường thuộc tính riêng hoặc trường chỉ đọc). Rất tiếc, điều đó có nghĩa là đối với nhiều loại người dùng xác định loại người nào đó muốn lưu trữ trong cài đặt - ví dụ: các kiểu lưu trữ giá trị không thay đổi đơn giản - kỹ thuật rất hữu ích này không thể được sử dụng. :( –
- 1. Tùy chỉnh enum là kiểu cài đặt ứng dụng trong C#?
- 2. Thuộc tính lớp tùy chỉnh trong Ứng dụng kiểu Metro
- 3. Visual C# "Trình chỉnh sửa cài đặt" trong ứng dụng?
- 4. Cài đặt ứng dụng Ngôn ngữ trong Tùy chọn Android
- 5. Cài đặt XML tùy chỉnh/lồng nhau trong ServiceConfiguration.cscfg
- 6. C Cài đặt # Ứng dụng không tiết kiệm sử dụng lớp tùy chỉnh
- 7. Wix - Thư mục cài đặt tùy chỉnh
- 8. Tạo ứng dụng kiểu đổ vỡ tùy chỉnh
- 9. Thiết lập cài đặt Git tùy chỉnh
- 10. Cài đặt snap-in MMC tùy chỉnh
- 11. Lưu cài đặt ứng dụng trong Silverlight
- 12. Cài đặt ứng dụng
- 13. Cài đặt ứng dụng truy cập từ ASP.Net MVC Xem
- 14. Ứng dụng ASP.NET trình cài đặt MSI nhiều trường hợp
- 15. Cài đặt URL gốc tùy chỉnh trong Chơi 2.0
- 16. Lưu cài đặt ứng dụng iPhone trong ứng dụng
- 17. Asp.net Web API - Cách đặt tên tệp cho Định dạng Kiểu phương tiện CSV tùy chỉnh
- 18. Cách đặt phông chữ tùy chỉnh theo kiểu in đậm
- 19. Cài đặt kiểu mẫu Maven
- 20. combobox tùy chỉnh trong ứng dụng wpf
- 21. Gỡ cài đặt ứng dụng khách ClickOnce
- 22. Tập lệnh cài đặt ứng dụng Django - Cách thêm ứng dụng vào cài đặt INSTALLED_APPS?
- 23. Lưu cài đặt ứng dụng trong C#
- 24. Cài đặt cấp ứng dụng trong DDD?
- 25. Cách cài đặt phông chữ tùy chỉnh trong thiết bị Android
- 26. Cài đặt bộ nối tiếp Json.NET tùy chỉnh theo loại
- 27. Tạo hành động tùy chỉnh trong Wix để sử dụng trong cài đặt im lặng
- 28. Cách sử dụng cài đặt Khu vực tùy chỉnh và Ngôn ngữ của Windows trong WPF
- 29. Android: BroadcastReceiver khi cài đặt/gỡ cài đặt ứng dụng
- 30. Sử dụng các kiểu dữ liệu tùy chỉnh trong VBA
Sử dụng Web.config để thay thế. – BizApps
Tôi nghĩ rằng những gì bạn đang hỏi là "Bạn có thể lưu trữ các loại phức tạp hơn theo cách tương tự như AppSettings bên trong một ứng dụng web? Nếu vậy, bạn cần phải xem" Tài nguyên nhúng "thay vì lưu trữ chúng trong Web. Cấu hình –
@Dave: http://stackoverflow.com/questions/6288943/web-config-appsettings-complex-values/6288986#62889986 đã kích hoạt câu hỏi này. Hãy đọc nhận xét. I am stil hoài nghi – naveen