मैं एक जटिल नियंत्रण उत्पन्न करने का प्रयास कर रहा हूं जिसका उपयोग अक्सर मेरी वेबसाइट में किया जाता है लेकिन विभिन्न क्षेत्रों के साथ। नियंत्रण में कार्यक्षमता हमेशा एक ही होती है, यह केवल अंतर्निहित फ़ील्ड है जो बदलती है।लैम्ब्डा अभिव्यक्ति के गुणों पर इटरेटिंग
विभिन्न फ़ील्ड दिखाने की विधि प्राप्त करने के लिए मैं एक HTMLHelper एक्सटेंशन बनाने का प्रयास कर रहा हूं जो पैरामीटर के रूप में Expression<Func<TModel,TProperty>>
स्वीकार करता है, जिसमें नियंत्रण में प्रदर्शन के लिए आवश्यक कक्षा के गुण शामिल होंगे। उदाहरण के लिए:
दृश्य:
@model Project.Core.Page
@Html.MyHelper(p => new { p.Author.Name, p.Author.Location, p.Author.Age });
यह विस्तार मैं साथ में समस्या आ रही है - मैं कैसे लैम्ब्डा भी एक TextBoxFor()
के साथ प्रत्येक प्रदान करने के लिए, या में प्रदान की पैरामीटर से अधिक पुनरावृति कर सकते हैं मैन्युअल रूप से एक बनाने के input
तत्व और lambda पैरामीटर के value
और name
के साथ इसे पॉप्युलेट करें?
छद्म में विस्तार:
public static MvcHtmlString MyHelper<TModel,TProperty>(
this HtmlHelper<TModel> helper,
Expression<Func<TModel,TProperty>> expression) {
foreach (var parameter in expression.???) {
// helper.TextBoxFor(???)
// TagBuilder("input").Attributes("name", expression.???)
}
}
मुझे लगता है कि मैं अभी तक बहुत लंबे समय के लिए इस घूर कर रहा है, और मैं भी वहाँ एक और अधिक आसान तरीका मैं इस को प्राप्त करने का अनदेखी हूँ महसूस कर रहा हूँ।
किसी भी मदद की बहुत सराहना की जाती है। अगर आपको और जानकारी चाहिए, या मुझे कुछ महत्वपूर्ण याद आया है, तो मुझे बताएं।
प्रश्न और मेरी प्रतिक्रिया को दोबारा पढ़ने के बाद, मुझे एहसास हुआ कि मेरा पहला उदाहरण मॉडल पर जटिल गुणों के मूल्यों को एक्सेस नहीं कर सका। मैंने इस स्थिति के लिए अपने कोड उदाहरण को अपडेट किया है। – mclark1129