Có thể ai đó vui lòng làm rõ điều gì đó cho tôi. Trong 2 ứng dụng ASP.NET MVC của tôi, tôi đã có một lớp BaseViewModel
trong đó bao gồm các phương pháp sau đây:Các đối số kiểu không thể được suy ra từ việc sử dụng. Hãy thử xác định các đối số kiểu rõ ràng
public virtual IDictionary<string, object> GetHtmlAttributes<TModel, TProperty>
(Expression<Func<TModel, TProperty>> propertyExpression)
{
return new Dictionary<string, object>();
}
Ý tưởng được rằng mỗi viewmodel đứa trẻ có thể ghi đè phương pháp này và cung cấp một tập hợp các thuộc tính html, dựa trên một số logic, để được trả lại trong giao diện:
<%: Html.TextBoxFor(model => model.MyProperty, Model.GetHtmlAttributes
(model => model.MyProperty)) %>
Tuy nhiên khi sử dụng như trong dòng trên, tôi nhận được một lỗi biên dịch khi tôi nhấn xem:
những lập luận kiểu cho gặp hod '
...BaseViewModel.GetHtmlAttributes<TModel,TProperty> Expression<System.Func<TModel,TProperty>)
' không thể suy ra từ việc sử dụng. Hãy thử xác định các đối số kiểu một cách rõ ràng.
tôi phải làm như sau:
<%: Html.TextBoxFor(model => model.MyProperty, Model.GetHtmlAttributes
<ChildModel, string>(model => model.MyProperty)) %>
Tôi chỉ tìm kiếm một số rõ ràng như thế nào nó cố gắng để suy ra các loại, nó đã không có vấn đề làm như vậy trong phương pháp HtmlHelper/TextBoxFor
mở rộng?
Có phải vì HtmlHelper
trong chế độ xem sẽ tự động là cùng loại như được chỉ định trong ViewUserControl
ở đầu trang, trong khi mã của tôi có thể cho bất kỳ loại nào được kế thừa từ BaseViewModel
? Có thể viết điều này theo cách mà nó có thể suy ra kiểu mô hình/thuộc tính của tôi không?
Thanh cuộn ngang ngang! –
Hoàn toàn đúng. Đó là vô lý trên 30 "màn hình của chúng tôi mà chúng tôi nhận được chỉ 6,5" để di chuyển mã qua lại trong các cửa sổ nhỏ. Hãy đến với các bạn SA, lấy tiền VC của bạn và nhận được với kích thước trang động! – Slaggg