2015-05-13 3 views
0

Я хочу вернуть обычный/текст http://domain.com/robots.txtКак вернуть обычный/текст robots.txt в AngularJS

asp.net mvc Common controller   

     public ActionResult RobotsTextFile() 
     { 
      var disallowPaths = new List<string>() 
            { 
             "/bin/", 
             "/content/files/", 
             "/content/files/exportimport/", 
             "/country/getstatesbycountryid", 
             "/install", 
             "/setproductreviewhelpfulness", 
            }; 
      var localizableDisallowPaths = new List<string>() 
               { 
                "/addproducttocart/catalog/", 
                "/addproducttocart/details/", 
                "/boards/forumwatch",             
                "/deletepm", 
                "/emailwishlist", 
                "/inboxupdate", 
                ... 
               }; 


      const string newLine = "\r\n"; //Environment.NewLine 
      var sb = new StringBuilder(); 
      sb.Append("User-agent: *"); 
      sb.Append(newLine); 
      //sitemaps 
      if (_localizationSettings.SeoFriendlyUrlsForLanguagesEnabled) 
      { 
       //URLs are localizable. Append SEO code 
       foreach (var language in _languageService.GetAllLanguages(storeId: _storeContext.CurrentStore.Id)) 
       { 
        sb.AppendFormat("Sitemap: {0}{1}/sitemap.xml", _storeContext.CurrentStore.Url, language.UniqueSeoCode); 
        sb.Append(newLine); 
       } 
      } 
      else 
      { 
       //localizable paths (without SEO code) 
       sb.AppendFormat("Sitemap: {0}sitemap.xml", _storeContext.CurrentStore.Url); 
       sb.Append(newLine); 
      } 

      //usual paths 
      foreach (var path in disallowPaths) 
      { 
       sb.AppendFormat("Disallow: {0}", path); 
       sb.Append(newLine); 
      } 
      //localizable paths (without SEO code) 
      foreach (var path in localizableDisallowPaths) 
      { 
       sb.AppendFormat("Disallow: {0}", path); 
       sb.Append(newLine); 
      } 
      if (_localizationSettings.SeoFriendlyUrlsForLanguagesEnabled) 
      { 
       //URLs are localizable. Append SEO code 
       foreach (var language in _languageService.GetAllLanguages(storeId: _storeContext.CurrentStore.Id)) 
       { 
        foreach (var path in localizableDisallowPaths) 
        { 
         sb.AppendFormat("Disallow: {0}{1}", language.UniqueSeoCode, path); 
         sb.Append(newLine); 
        } 
       } 
      } 

      Response.ContentType = "text/plain"; 
      Response.Write(sb.ToString()); 
      return null; 
     } 

Angularjs Вид

  <html> <body>... script code here.. 
     <div class="content col-lg-9"> 
        <div ui-view="main" class="shuffle-animation"></div> 
       </div> 
     <footer>...</footer> 
    </body></html 

ui.router:

$stateProvider   
       .state('robots', { 
        url: '/robots.txt', 
        views: { 
         '@': { 
          templateUrl: '/App/Main/layouts/_ColumnsTwo.html' 
         }, 
         '[email protected]': { 
          templateUrl: '/Common/RobotsTextFile' 
        } 
        } 
       }) 

Когда я нажимаю http://domain/robots.txt, он попадает в общий контроллер, но он просто возвращает весь полный контент html без содержимого роботов.

Что я могу сделать, чтобы вытолкнуть только обычный/текст в Angularjs, когда все, кажется, положить в <div ui-view="main" class="shuffle-animation"></div>

Результат должен быть, как http://demo.nopcommerce.com/robots.txt

ответ

1

Это не имеет много общего с AngularJS.

Не писать непосредственно в поток ответа, пусть ASP.NET MVC справиться с этим:

return Content("whatever you want", "text/plain"); 

Таким образом, вы просто получить строку из метода.

+0

return Содержимое не даст мне только текст/текст. Он по-прежнему нести html тело с главной страницы. В MVC Response.ContentType = "text/plain"; Response.Write (sb.ToString()); будет игнорировать структуру страницы сайта. Но теперь это не сработает в Angular –

+0

ContentResult не будет вызывать макет, поскольку нет представления. Он возвращает только тот контент, который вы хотите. И AngularJS работает только в браузере, поэтому, поскольку нет представления, AngularJS не беспокоится. Что-то не так с вашей настройкой, если вы получаете представление из ContentResult. –

+0

глупо мне, я все усложнил, поместив маршрутизацию в ui-route, достаточно использовать mvc. Спасибо за вашу помощь. –

 Смежные вопросы

  • Нет связанных вопросов^_^