2016-03-29 21 views
2

ASP.NET MVC'ye oldukça yeniyim ve umarım bana yardımcı olabilirsiniz. İki basit kontrol cihazım var. Bir ana denetleyici ve bir kısmi görünüm için. kısmi görünümü denetleyicisi ana görünümdeKısmi görünüm için tam yol sağlamak neden gereklidir

public PartialViewResult PartialSection() 
{ 
    //query for partial view model 

    return PartialView("MyPartialView", viewModel); 
} 

aşağıdaki pasajı sahip yapmak yukarıda aşağıdaki hata atar bu

@Html.Action("PartialSection", "MyPartialController") 

: I kodunu değiştirmek ise

The partial view '_MyPartialView' was not found or no view engine supports the searched locations.

benim kısmi görünümü denetleyicisinde ve kısmi tam yolunu sağlamak için

return PartialView("~/Views/Common/_MyPartialView.cshtml", viewModel); 

Ardından hata göremiyorum ve kısmi görünüm beklendiği gibi işleniyor.

Bu yüzden sorum, farklı bir denetleyiciden çağıran neden PartialView numaralı bağlantıya tam yol vermem gerekiyor. hangi çerçeve mevcut klasörleri kullanmak yerine özel klasörünü kullanarak çünkü

cevap

4

deneyin görünümü almak için kullanır.

sen >> >> MyPartial klasörü altında Görüntüleme görünümünüzü _MyPartialView.cshtml yerleştirirseniz o zaman tam yolunu yazmak gerekmez, ancak yeni bir klasör adı oluşturduk olarak Ortak çerçeve değil Bir Görünümün döndürülmesi istendiğinde, bu klasöre de bakmak zorunda olduğunu bilin.

Varsayılan olarak çerçeve yalnızca Görünüm dosyası için iki konumda görünüyor. Görünümler içindeki kontrolör adlı dizin karşı

1) Klasör Klasör yılında

2)Görüntüleme klasörü Shared dizin

Yapmanız istemiyorsanız Bu görüntüyü Ortak klasöründe tutmak istediğinizde, çerçeveye özel klasörlerinize de bakmasını isteyebilirsiniz.

Sen özel klasörleri kayıt olabilirsiniz

Global.asax yılında Application_Start olay PartialViews aranılacak olan :

RazorViewEngine razorEngine = ViewEngines.Engines.OfType<RazorViewEngine>().FirstOrDefault(); 
if (razorEngine != null) 
{ 
    var newPartialViewFormats = new[] 
           { 
           "~/Views/Common/{0}.cshtml" 
           }; 
    razorEngine.PartialViewLocationFormats = razorEngine.PartialViewLocationFormats.Union(newPartialViewFormats).ToArray(); 
} 

Sen olarak aşağıda mı bu blogpost for details.

+0

Daha da iyisi: Ortak görünümleri ortak klasöre koymanız yeterli. Sözleşmeyi kullan ve mutlu ol. –

+0

Teşekkürler bunun için .. daha iyi bir anlayış elde etmemde yardımcı oldu :) – Izzy

+0

@EduardoMolteni evet ama bazen bazı nedenlerden dolayı Görünümlerimizi farklı bir şekilde düzenlemek istiyoruz, böylece Paylaşılan klasör büyük bir görünüm listesiyle bitmiyor –

0

Kaldır

MyPartialController

gelen Kontrolör böylece yerine

@Html.Action("PartialSection", "MyPartialController") 

Sen tam yolunu geçmesi gerekiyor

@Html.Action("PartialSection", "MyPartial") 
+0

Yardımınız için teşekkürler, ancak @ EʜsᴀɴSᴀᴊᴊᴀᴅ [answer] (http://stackoverflow.com/a/36285847/3793448) sorunumu çözdü. – Izzy

0

bakabilirsiniz:

public PartialViewResult PartialSection() 
{ 
    //query for partial view model 

    return PartialView("_MyPartialView", viewModel); 
} 

Ve aşağıdaki gibi arayın:

@Html.Action("PartialSection", "MyPartial") 
İlgili konular