SORU
1 Mart 2011, Salı


Nasıl ASP.NET MVC 3 razor ViewStart dosyasında farklı Düzenler belirtmek musunuz?

Benim uygulamada 2 ayrı Düzenler istiyorum. İzin bir web sitesinin Halka açık bölümünden de ki ve diğer Üye taraf için.

Kolaylık sağlar tezler sitelerin her biri için tüm mantığı birbirine bitişik 2 ayrı denetleyicileri içine sarılmış olduğunu söylüyorlar.

  • PublicController
  • StaffController

Ve onlar için her bir Görünüm için, karşılık gelen bir Düzen var bunun altında.

  • _PublicLayout.cshtml
  • _StaffLayout.cshtml

Nasıl _ViewStart kullanırım.tüm cshtml View / "kullanın PublicLayout ve her şeyi" "StaffLayout? kullanımı Personel altında Kamu altında Eylem belirtmek için dosya

Teşekkürler!

CEVAP
1 Mart 2011, Salı


/Views klasöründe varsayılan geçersiz kılmak ve istediğiniz düzeni belirtin ki /Views/Public klasörünün içinde _ViewStart.cshtml bir dosya koyabilirsiniz:

@{
    Layout = "~/Views/Shared/_PublicLayout.cshtml";
}

Benzetme tarafından /Views/Staff klasörünün içinde _ViewStart.cshtml başka bir dosya ile koyabilirsiniz:

@{
    Layout = "~/Views/Shared/_StaffLayout.cshtml";
}

Ayrıca denetleyici bir eylem içinde bir görünüm dönerken kullanılması gerektiğini belirtmek olabilir ama bu eylem başına:

return View("Index", "~/Views/Shared/_StaffLayout.cshtml", someViewModel);

Bir başka olasılık düzenini geçersiz olan özel eylem bir filtre. Birçok olasılık bunu başarmak için gördüğünüz gibi. Size seçim için hangisi en iyi senaryoya uyuyor.


GÜNCELLEME:

Yorum olarak istenen bölüm burada bir eylem bir ana sayfa seçin: filtre örneği

public class LayoutInjecterAttribute : ActionFilterAttribute
{
    private readonly string _masterName;
    public LayoutInjecterAttribute(string masterName)
    {
        _masterName = masterName;
    }

    public override void OnActionExecuted(ActionExecutedContext filterContext)
    {
        base.OnActionExecuted(filterContext);
        var result = filterContext.Result as ViewResult;
        if (result != null)
        {
            result.MasterName = _masterName;
        }
    }
}

ve sonra süslemek bir kontrol ya da bu özel öznitelik içeren bir eylem düzenini belirtmek istiyorum:

[LayoutInjecter("_PublicLayout")]
public ActionResult Index()
{
    return View();
}

Bunu Paylaş:
  • Google+
  • E-Posta
Etiketler:

YORUMLAR

SPONSOR VİDEO

Rastgele Yazarlar

  • David Tedeyev

    David Tedeye

    20 AĞUSTOS 2011
  • Ryan Ha

    Ryan Ha

    9 NİSAN 2006
  • Theodore Leaf

    Theodore Lea

    29 AĞUSTOS 2006