2016-03-24 36 views
0

Kısmi görünümleri döndüren bir denetleyicim var, daha sonra Angular 2 templateUrl olarak kullanılıyor. Örnek içinASP .Net Çekirdek + Açısal 2 yönlendirme

:

Açısal bileşeni:

@Component({ 
    selector: 'my-app', 
    templateUrl:'/partials/index', 

Denetleyici:

public class PartialsController : Controller 
    { 

     public IActionResult Index() 
     { 
      return PartialView(); 
     } 
    } 

Eğik 2 hala html alabilirsiniz şekilde yolları yapılandırmak için bir yolu var mı denetleyiciden, ancak adresi bir tarayıcıda (www.abc.com/partials/index) elle yazarak, kısmi görünüm yerine varsayılan denetleyici veya "bulunamadı" ifadesini döndürür.

Bu akım rota yapılandırma geçerli:

app.UseMvc(config => 
      { 
       config.MapRoute(
        name: "Default", 
        template: "{controller}/{action}/{id?}", 
        defaults: new { controller = "Home", action = "Index" } 
       ); 
       config.MapRoute(
       name: "angular", 
       template: "{*anything}", 
       defaults: new { controller = "Home", action = "Index" } 
       ); 
      }); 

"açısal" rota tarayıcıdan aşağıya ekliyoruz adresleri ile çalışmak Eğik yönlendirme için gereklidir.

cevap

0

Durumu işlemek için bir eylem filtresi yazabilirsiniz.

public class OnlyAjaxAttribute : ActionFilterAttribute 
{ 
    public OnlyAjaxAttribute() 
    { 

    } 
    public override void OnActionExecuting(ActionExecutingContext context) 
    { 
     var accepts = context.HttpContext.Request.Headers["Accept"].ToString(); 
     if (accepts.Contains("text/html")) 
     { 
      context.Result = new HttpStatusCodeResult(404); 
     } 
     base.OnActionExecuting(context); 
    } 
} 
[OnlyAjax] 
public class PartialsController : Controller 
{ 

    public IActionResult Index() 
    { 
     return PartialView(); 
    } 
} 
+0

Bu, doğrudan tarayıcı bağlantılarını durdurur, ancak ne yazık ki açısal html'yi alamaz. –

+1

Düzenlemeden sonra bu mükemmel çalışır. Teşekkür ederim. –