typeahead-template-url会导致页面要求提供凭据

时间:2018-02-06 22:29:53

标签: angularjs angular-ui-bootstrap

我有这个Anuglar.js UI-Boostrap问题。我正在尝试使用ui-bootstrap设置自定义弹出模板。然而,每当页面加载,然后我弹出一个要求我再次输入我的凭据。它们在页面上没有错误,并且无法通过网络加载任何内容。如果我尝试登录它说它不正确,如果我取消它会让我退出我的应用程序。

我慢慢开始评论我添加的代码的不同部分,并发现当我注释掉ui-bootstrap属性时,它不再要求下面的凭据,下面的代码是ui-boostrap注释掉的。

<input type="text"  @*typeahead-popup-template-url="customPopupTemplate"*@ typeahead-min-length="0" typeahead-show-hint="false" uib-typeahead="d as d.name for d in bds | filter:{name:$viewValue,isDeleted:false}" typeahead-on-select="getStuffs($item)" ng-model="item.bd" ng-required="true" />

下面的customPopupTemplate来自angulars网站(向下滚动到typeahead)

http://angular-ui.github.io/bootstrap/

我最初做了网站的逐字记录,但仍然弹出,所以我把部分额外的标记加载到页面上,我仍然得到相同的问题。我正在尝试显示自定义弹出窗口,但无法通过网站要求凭据。我在这里有点迷失,不知道该往哪里去。任何帮助将不胜感激。

<div class="col-md-12" id="customPopupTemplate">
    <div class="custom-popup-wrapper"
         ng-style="{top: position().top+'px', left: position().left+'px'}"
         style="display: block;"
         ng-show="isOpen() && !moveInProgress"
         aria-hidden="{{!isOpen()}}"

         >
        <p class="message">select location from drop down.</p>
        <ul class="dropdown-menu" role="listbox">
            <li class="uib-typeahead-match" ng-repeat="match in matches track by $index" ng-class="{active: isActive($index) }"
                image-checkbox ng-style="{'background-color':bgCol}" ng-mouseenter="selectActive($index)" ng-click="selectMatch($index)" role="option" id="{{::match.id}}">
                <div uib-typeahead-match index="$index" match="match" query="query" ng-style="{background-color:match.color" template-url="templateUrl"></div>
            </li>
        </ul>
    </div>
</div>

enter image description here

2 个答案:

答案 0 :(得分:2)

在页面加载时提示输入这样的凭据通常是由Web服务器配置引起的。我的猜测是你在网站上启用了IIS和Windows身份验证,它需要你的本地Windows用户凭据。

尝试在IIS中禁用Windows身份验证和启用匿名,以查看是否获得相同的结果。

答案 1 :(得分:1)

假设您正在使用ASP.Net mvc,您可能需要添加一个存储customPopupTemplate的web.config文件。首先,我建议重命名为

customPopupTemplate.cshtml。然后,您需要在项目区域中添加web.config文件,这些文件位于这些模板文件所在的区域中。像这样:

<?xml version="1.0"?>

<configuration>
  <configSections>
    <sectionGroup name="system.web.webPages.razor" type="System.Web.WebPages.Razor.Configuration.RazorWebSectionGroup, System.Web.WebPages.Razor, Version=3.0.0.0, Culture=neutral, PublicKeyToken=">
      <section name="host" type="System.Web.WebPages.Razor.Configuration.HostSection, System.Web.WebPages.Razor, Version=3.0.0.0, Culture=neutral, PublicKeyToken=" requirePermission="false" />
      <section name="pages" type="System.Web.WebPages.Razor.Configuration.RazorPagesSection, System.Web.WebPages.Razor, Version=3.0.0.0, Culture=neutral, PublicKeyToken=" requirePermission="false" />
    </sectionGroup>
  </configSections>

  <system.web.webPages.razor>
    <host factoryType="System.Web.Mvc.MvcWebRazorHostFactory, System.Web.Mvc, Version=5.2.3.0, Culture=neutral, PublicKeyToken=" />
    <pages pageBaseType="System.Web.Mvc.WebViewPage">
      <namespaces>
        <add namespace="System.Web.Mvc" />
        <add namespace="System.Web.Mvc.Ajax" />
        <add namespace="System.Web.Mvc.Html" />
        <add namespace="System.Web.Optimization"/>
        <add namespace="System.Web.Routing" />
      </namespaces>
    </pages>
  </system.web.webPages.razor>

  <appSettings>
    <add key="webpages:Enabled" value="false" />
  </appSettings>

  <system.webServer>
    <handlers>
      <remove name="BlockViewHandler"/>
      <add name="BlockViewHandler" path="*.cshtml" verb="*" preCondition="integratedMode" type="System.Web.HttpNotFoundHandler" />
    </handlers>
  </system.webServer>

  <system.web>
    <compilation>
      <assemblies>
        <add assembly="System.Web.Mvc, Version=5.2.3.0, Culture=neutral, PublicKeyToken=" />
      </assemblies>
    </compilation>
  </system.web>
</configuration>

关键是system.webServer中的此部分。它基本上允许应用程序提供.cshtml个文件:

<handlers>
          <remove name="BlockViewHandler"/>
          <add name="BlockViewHandler" path="*.cshtml" verb="*" preCondition="integratedMode" type="System.Web.HttpNotFoundHandler" />
</handlers>