8

पर आंशिक डेटा मॉडल पास करें मैं एक आंशिक दृश्य बनाना चाहता हूं जो मॉडल कॉलम प्राप्त करे और इसे प्रिंट करें। कुछ इस तरह:asp.net mvc - आंशिक दृश्य

दृश्य में:

@model IEnumerable<products_comparison.Models.Product> 
@{ 
ViewBag.Title = "Index"; 

var Brand = (from r in Model 
      select r.Brand).Distinct(); 
} 
<h2> 
Index</h2> 

@Html.RenderPartial("_DisplayAttribute",Brand) 

और आंशिक दृश्य में:

  1. संकलक:

    <table> 
        <tr> 
         <th> 
          Brand 
         </th> 
        </tr> 
        @foreach (var row in Model) 
        { 
         <tr> 
          <td> 
           @Html.DisplayFor(r => row) 
          </td> 
         </tr> 
        } 
    </table> 
    

    कुछ समस्याओं मैं में चलाने रहे हैं मुझे आंशिक दृश्य में बारेंड भेजने की अनुमति नहीं देता है।

  2. यदि आप आंशिक दृश्य कोड देखते हैं तो आपको ब्रांड शब्द दिखाई देगा, जो कॉलम नाम है। मैं आंशिक दृश्य में "ब्रांड" शब्द को कड़ी-कोडित नहीं करना चाहता, बल्कि मुझे यह पसंद है कि कॉलम का नाम वहां होगा।
  3. आंशिक दृश्य में मुझे @model products_comparison.Models.Product डालना होगा, लेकिन मैं छेद तालिका नहीं भेजना चाहता हूं। मैं केवल एक कॉलम भेजना चाहता हूं - लेकिन मुझे नहीं पता कि वहां क्या रखा जाए ..

धन्यवाद!

संपादित करें:

बस एक बात स्पष्ट करने के लिए, मैं चाहता हूँ कि दृश्य (वैसे भी तालिका में कॉलम के अधिकांश के लिए) एक ही आंशिक प्रत्येक स्तंभ के लिए तालिका में देखने को कॉल करेंगे और हर बार मैं हूँ एक अलग कॉलम भेजें (सटीक मान कॉलम सटीक होना)।

उत्तर

7

लिए बदलने का प्रयास करें @Html.RenderPartial("_DisplayAttribute",Brand)

@Html.Partial("_DisplayAttribute",Brand) को तुम भी @model products_comparison.Models.Brand या कुछ और की तरह आंशिक दृश्य में मॉडल निर्दिष्ट करने के लिए जैसे कि यह

भी स्पष्ट 2 & 3 कृपया के रूप में वे स्पष्ट नहीं हैं की आवश्यकता होगी आप क्या चाहते हैं

+0

1 के लिए आपका उत्तर यह तय .. और मैं मेरे सवाल .. – Nir

+0

धन्यवाद संपादित करें! आपका जवाब अच्छा है! –

+0

@Nir यह आमतौर पर सहायक होता है यदि आप उस उत्तर को स्वीकार करते हैं जो आपकी मदद करता है। (कृपया और धन्यवाद।) –

12

सही तर्क में सही तर्क को दोबारा लगाने और डालने से शुरू करें। इस LINQ क्वेरी को दृश्य में करने के लिए कड़ाई से कुछ भी नहीं है। एक दृश्य किसी भी LINQ प्रश्न या डेटा खींचने के लिए जो भी नहीं करना चाहिए। एक दृश्य को डेटा के साथ काम करना चाहिए कि इसे एक दृश्य मॉडल के रूप में नियंत्रक कार्रवाई से पास किया जाता है। एक नियंत्रक कार्रवाई एक अनुकूलित दृश्य मॉडल बनाता है और पास करता है जिसे आप दृश्य के लिए परिभाषित करते हैं।

तो जैसा कि आपको कभी भी उस आपके विचार की आवश्यकताओं के लिए अनुकूलित किया जाएगा एक दृश्य के मॉडल को परिभाषित करने से शुरू:

public class MyViewModel 
{ 
    public IEnumerable<Brand> Brands { get; set; } 
} 

तो आप एक नियंत्रक कार्रवाई है, यह दृश्य मॉडल पॉप्युलेट और यह देखने के लिए पारित करेंगे बारे में :

public ActionResult Foo() 
{ 
    IEnumerable<products_comparison.Models.Product> products = ... 
    var model = new MyViewModel 
    { 
     Brands = (from r in Model select r.Brand).Distinct() 
    }; 
    return View(model); 
} 

तो एक दृश्य:

@model MyViewModel 
<table> 
    <tr> 
     <th> 
      Brand 
     </th> 
    </tr> 
    @Html.DisplayFor(x => x.Brands) 
</table> 

और आप cou अंत में ld जो अपने आप आपके दृश्य मॉडल की Brands संग्रह के प्रत्येक तत्व (~/Views/Shared/DisplayTemplates/Brand.cshtml) के लिए प्रदान की गई हो जाएगा एक इसी प्रदर्शन टेम्पलेट को परिभाषित:

@model Brand 
<tr> 
    <td> 
     @Html.DisplayForModel() 
    </td> 
</tr> 
+0

धन्यवाद। आपके उत्तर में मेरी समस्या यह है कि ब्रांड कॉलम पर दृश्य पता, कॉलम पर नहीं .. मैं चाहता हूं कि दृश्य तालिका में प्रत्येक कॉलम के लिए समान आंशिक दृश्य (तालिका में अधिकांश स्तंभों के लिए) को कॉल करेगा। इसके कारण मैंने केवल ब्रांड को देखने के लिए पास नहीं किया, बल्कि मैं छेद तालिका भेजता हूं। – Nir

+0

@nir, इस मामले में आप अपने दृश्य मॉडल को अनुकूलित कर सकते हैं ताकि इसमें तालिका के कॉलम और पंक्तियां हों। –

+0

तो यह मॉडल से खुद कैसे हटता है? – Nir

संबंधित मुद्दे