ASP.NET MVC 3 लेआउट पृष्ठ में आंशिक देखें




asp.net-mvc-2 partial-views (3)

के बजाय:

public ActionResult Index()
{
    return View(layout);
}

कर:

public ActionResult Index()
{
    return PartialView(layout);
}

यदि आप ऐसा नहीं करते हैं कि जब आप अपने बच्चे की कार्रवाई से एक सामान्य दृश्य वापस करते हैं, तो यह सामान्य दृश्य लेआउट को शामिल करने का प्रयास करता है, जो बदले में बाल क्रिया को प्रस्तुत करने का प्रयास करता है, जिसके बदले में एक दृश्य लौटाता है, जो बदले में लेआउट , जो बदले में बाल एक्शन को प्रस्तुत करने का प्रयास करता है ... और हम इस नाम से समाप्त होते हैं जैसे एक ही इसी साइट द्वारा रखी गई।

आपके आंशिक रूप में भी आपको डबल एन्कोडिंग करने की आवश्यकता नहीं है। @ रेजर फ़ंक्शन एचटीएमएल इनकोड करता है:

@model MyApp.Models.ViewModel.LayoutViewModel
<p>

    @foreach (var item in Model.navHeader)
    {
        @item.Name 
        @item.URL
    }
</p>

मैं एक asp.net MVC लेआउट पेज के लिए एक साझा सामग्री (नेविगेशन) सेट अप करने पर काम कर रहा हूं।

यहां मॉडल से नेविगेशन डेटा खींचने के लिए कोड के साथ मेरा आंशिक दृश्य "_LayoutPartial.cshtml" है I

@model MyApp.Models.ViewModel.LayoutViewModel
<p>

    @foreach (var item in Model.navHeader)
    {
        //Test dump of navigation data
        @Html.Encode(item.Name); 
        @Html.Encode(item.URL); 

    }
</p>

यहां बताया गया है कि मेरे नियंत्रक "LayoutController.cs" का कोड कैसा दिखता है

using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Web.Mvc;
using MyApp.Models.ViewModel;

namespace MyApp.Controllers
{
    public class LayoutController : Controller
    {

        //
        // GET: /Layout/

        LayoutViewModel layout = new LayoutViewModel();

        public ActionResult Index()
        {
            return View(layout);
        }

    }
}

यहां "_Layout.cshtml" पृष्ठ के लिए कोड है मैं Html.RenderAction (एक्शन, कंट्रोलर) विधि का उपयोग करके आंशिक दृश्य को कॉल करने का प्रयास कर रहा हूं।

<!DOCTYPE html>
<html>
<head>
    <meta charset="utf-8" />
</head>
<body>
    <p>
        @{Html.RenderAction("Index","Layout");}
    </p>

    @RenderBody()
</body>
</html>

जब लेआउट पृष्ठ @ {Html.RenderAction ("सूचकांक", "लेआउट");} लाइन को निष्पादित करता है, तो यह एक त्रुटि संदेश को "हैंडलर के लिए बाल अनुरोध निष्पादित करने में त्रुटि" फेंकता है। वेब। Mvc.HttpHandlerUtil + ServerExecuteHttpHandlerAynyncWrapper '। "

क्या मैं दोस्तों को याद कर रहा हूँ? मैं लेआउट पृष्ठ में एक आंशिक दृश्य कैसे कॉल कर सकता हूं?

एडवांस में आप सभी को धन्यवाद!


पहले यह सत्यापित करें कि आपका बच्चा दृश्य Shared निर्देशिका के अंदर है

@Html.Partial("_LayoutPartial")

या

 @{Html.RenderAction("actionname", "controller name");}

और @Html.Encode() उपयोग न करें, रेज़र पहले से ही यू के लिए कर रहा है महज प्रयोग करें

@item.Name 
@item.URL

मुझे पता है यह एक पुराना सवाल है, लेकिन मैंने सोचा कि मैं इसे यहाँ फेंक दूंगा। आप या तो Html.Action उपयोग कर सकते Html.Action या Html.RenderAction वे दोनों तकनीकी रूप से एक ही काम करते हैं लेकिन इस बात पर निर्भर करते हुए कि आप कितनी सामग्री वापस लौट रहे हैं, उस पर एक प्रभाव हो सकता है जिस पर आपको सबसे अच्छी दक्षता के लिए वास्तव में उपयोग करना चाहिए।

दोनों तरीकों से आप एक एक्शन मैथ्यू को एक दृश्य से कॉल कर सकते हैं और दृश्य के भीतर कार्रवाई के परिणामों को आउटपुट कर सकते हैं। दोनों के बीच का अंतर यह है कि एचटीएमएल.रेंडर एक्शन रिस्पांस से सीधे परिणाम प्रदान करता है (जो कि एक्शन एचटीएमएल की बड़ी मात्रा में लौटता है), जबकि एचटीएमएल.एक्शन रिजल्ट के साथ स्ट्रिंग देता है।

स्रोत





partial-views