小编par*_*ent的帖子

使用$ expand的OData由于包装而中断了转换操作

我遇到了与此处相同的问题:

但是,答案对我来说还不够.首先,我不能为我的生活找到HierarchyNodeExpressionVisitorOData 5.0.0(不是RC1)(或任何地方,尝试谷歌搜索).

第二,即使我确实发现它返回IHttpActionResult不够好,我需要返回一个打字PageResult<MyViewModel>

所述归还的理由IHttpActionResult是"处理结果可能不再存在的事实IQueryable<MyEntity>".一旦使用$ expand运算符.

但这对我来说没有意义,因为我认为$ expand运算符用于在实体上包含导航属性,就像服务器端Include(e => e.RelatedProperty)一样.至少在我的情况下,我只包括已经在实体上的属性,所以我不必担心它"可能是其他东西".

但是当使用$expand=Department我不能Cast<>()实体类型因为它无法强制SelectAllAndExpand<MyEntity>转换为MyEntity.

如何将展开"展开"回原始实体,以便我可以进行投影?

public PageResult<DateSnippetWithDepartmentsViewModel> GetDatesWithDepartments(ODataQueryOptions<DateSnippet> options)
{
    IQueryable query = options.ApplyTo(_context.DateSnippets, new ODataQuerySettings());;

    //Exception when using $expand.. cannot cast SelectAllAndExpand<DateSnippet> to DateSnippet
    List<DateSnippet> dateSnippets = query.Cast<DateSnippet>().ToList();

    var dateSnippetsViewModels = (from d in dateSnippets
                                    select new DateSnippetWithDepartmentsViewModel
                                    {
                                        ...
                                    });

    var result = new PageResult<DateSnippetWithDepartmentsViewModel>(
            dateSnippetsViewModels as IEnumerable<DateSnippetWithDepartmentsViewModel>,
            Request.GetNextPageLink(), …
Run Code Online (Sandbox Code Playgroud)

c# odata asp.net-web-api

10
推荐指数
1
解决办法
1736
查看次数

声明单一类型 - "使用"等效于单一类型

在C#中,我可以这样做:

using IAnyType = App.Namespace.Types.IAnyType ;
class BaseClass : IAnyType { }
Run Code Online (Sandbox Code Playgroud)

是否有一个等价的文件?

//BAD:
import IDialogOptions = App.Widgets.Interfaces.IDialogOptions; //A module cannot be aliased as a non-module type
class BaseClass implements IDialogOptions { }

//BAD:     
declare var IDialogOptions: App.Widgets.Interfaces.IDialogOptions;
class BaseClass implements IDialogOptions { } //The name IDialogOptions does not exist in the current context   
Run Code Online (Sandbox Code Playgroud)

我能得到的最接近的是:

import Interfaces = App.Widgets.Interfaces;
class BaseDialog implements Interfaces.IDialogOptions { }
Run Code Online (Sandbox Code Playgroud)

每次我需要使用这个界面时,使用这个长名称并不理想.我想这不是很糟糕,但我想知道是否有更好的?

typescript

9
推荐指数
1
解决办法
3446
查看次数

Html5历史Api - 从域到域的pushState

我有一个网站作为门户网站类型的应用程序的登陆和信息页面.

我需要链接到门户网站来引发一个动画,它可以很好地过渡到门户视图(导航滑出,新的导航幻灯片,各种小部件淡出,新的淡入淡出等).

但是,我还需要网址www.mydomain.comportal.mydomain.com.

我愿意去任何长度,两个动画加载门户网站和网址是一个子域名.

据我所知,这样做会违反安全策略而不被允许,但如果要重新加载,则无法实现向门户的流畅过渡.

有什么可以做的吗?也许是在两个域之间建立明确信任的某种方式.

html5 browser-history history.js

9
推荐指数
1
解决办法
5542
查看次数

ng2 - 基于模板动态创建组件

我一直在研究Angular 2 API ComponentResolver以及DynamicComponentResolver创建动态组件,但我有一些不同于那些API提供的东西.

在NG2中是否有任何方法可以基于其类名字符串创建组件?

例如,我正在构建一个可配置的图表仪表板.每个用户的布局都存储在数据库中,说明他们需要2x折线图,3x条形图等.

当我将这些数据加载为json时,它看起来像:

user.charts = [
     { type: 'LineChartComponent', position: ... }
     { type: 'BarChartComponent', position: ... }
];
Run Code Online (Sandbox Code Playgroud)

type我想要反射创建的组件的类名在哪里.

到目前为止,我有以下内容:

 this.chartMap = {
    'LineChartComponent': LineChartComponent
 };

let config = this.configuration;
let chartComponentType = this.chartMap[config.type];
let factory = this.componentFactory.resolveComponentFactory(chartComponentType);
let component = factory.create(this.injector);
component.instance.configuration = config;
this.chartContainer.insert(component.hostView);
Run Code Online (Sandbox Code Playgroud)

但整个想法是消除对的需要chartMap.如何在不引用类型的情况下基于字符串反射性地创建此类?

angular2-injection angular2-components angular

9
推荐指数
1
解决办法
4509
查看次数

D3-zoom - 在拖动和平移之间切换时视图跳转

我遇到了 d3-zoom 的问题,这让我很头疼。

这是一个代码笔:https ://codepen.io/parliament718/pen/BaNQPXx

Y 轴可以拖动它来重新缩放。

问题是,如果我拖动/重新缩放它,然后平移图表,则会出现不需要的“跳跃”。

我不明白如何保持我的 2 个缩放行为同步。


const zoom = d3.zoom()
  .on('zoom', () => {
    const t = d3.event.transform;
    x.domain(t.rescaleX(x2).domain());
    y.domain(t.rescaleY(y2).domain());
    render();
  });

const yAxisZoom = d3.zoom()
  .on('zoom', () => {
    y.domain(d3.event.transform.rescaleY(y2).domain());
    render();
  });

const yAxisDrag = d3.drag()
  .on('drag', () => {
    const factor = Math.pow(2, -d3.event.dy * 0.01);
    d3.select('#zoom-chart .plot-area').call(yAxisZoom.scaleBy, factor);
  });

Run Code Online (Sandbox Code Playgroud)

d3.js

9
推荐指数
0
解决办法
197
查看次数

没有叠加的JQuery模态对话框

我试图显示一个"ajax加载器对话框",它阻止接口(模态),但没有叠加.

这是我初始化对话框的方式:

  $("<div></div>").dialog({
         modal: true,
         dialogClass: "noOverlayDialog",
         autoOpen: false, //opened later
         ...
  });
Run Code Online (Sandbox Code Playgroud)

我添加了以下CSS来隐藏叠加层:

.ui-dialog.noOverlayDialog + .ui-widget-overlay { opacity: 0 !important; }
Run Code Online (Sandbox Code Playgroud)

但是,当我调用dialog("open")覆盖闪烁然后消失,就像我使用Javascript隐藏它一样.使用display:none;或相同的效果visibility:hidden.

为了确保它是删除叠加层的css而不是其他东西,我删除了css行,当然,叠加层现在总是可见的.

为什么会这样?我认为静态CSS不应该有这种行为,并且应该在没有闪存的情况下立即隐藏叠加层.

如果我找不到直观的解决方案,也许另一种方法是将模态选项设置为false以防止叠加在一起,然后编写代码以获取模态行为.无论哪种方式,我需要一个有效的解决方案.

jquery overlay jquery-ui

8
推荐指数
2
解决办法
1万
查看次数

使用[FromUri]属性 - 使用嵌套数组绑定复杂对象

我想在uri中将带有嵌套数组的复杂对象发送到GET请求中的MVC操作方法.

请考虑以下代码:

 public ActionResult AutoCompleteHandler([FromUri]PartsQuery partsQuery){ ... }

 public class PartsQuery
 {
     public Part[] Parts {get; set; }
     public string LastKey { get; set; }
     public string Term { get; set; }
 }

 $.ajax({ 
    url: "Controller/AutoCompleteHandler", 
    data: $.param({                                        
                      Parts: [{ hasLabel: "label", hasType: "type", hasIndex : 1 }],
                      LastKey : "Last Key",
                      Term : "Term"                             
                   }),
    dataType: "json", 
    success: function(jsonData) { ... }
 });
Run Code Online (Sandbox Code Playgroud)

这很好用,并使用MVC Web Api中的默认模型绑定器正确绑定.

但是,将其切换为普通MVC而不是WebApi,并且默认模型绑定器会崩溃,并且无法绑定嵌套数组中对象的属性:

观察名单

partsQuery      != null          //Good
--LastKey       == "Last …
Run Code Online (Sandbox Code Playgroud)

c# asp.net-mvc model-binding

8
推荐指数
1
解决办法
2万
查看次数

验证访问令牌 - Asp.Net标识

我正在使用ASP.Net Identity来实现外部登录.用户登录Google后,我会获得谷歌的外部访问令牌.然后我对ObtainLocalAccessToken()进行第二次api调用,该调用将外部访问令牌换成新的本地访问令牌.

ObtainLocalAccessToken()调用VerifyExternalAccessToken(),它通过手动进行http调用和解析user_id来验证提供者的外部访问令牌.

如何利用ASP.NET标识删除整个方法VerifyExternalAccessToken()

我相信这[HostAuthentication(DefaultAuthenticationTypes.ExternalBearer)]是为了不是吗?我想ObtainLocalAccessToken()用该属性修饰端点并在header({'Authorization' : 'Bearer xxx' })中发送external_access_token ,它应该填充User.Identity而无需手动验证外部访问令牌?我相信这是目的,但我不能让它发挥作用.我从谷歌发送一个有效的外部访问令牌,它被401拒绝.

我在Startup.Auth btw中有这一行:

 app.UseOAuthBearerTokens(new OAuthAuthorizationServerOptions
        {
            TokenEndpointPath = new PathString("/Token"),
            Provider = new ApplicationOAuthProvider(),
            AuthorizeEndpointPath = new PathString("/AccountApi/ExternalLogin"),
            AccessTokenExpireTimeSpan = TimeSpan.FromDays(14),
            AllowInsecureHttp = true
        });
Run Code Online (Sandbox Code Playgroud)

或者,可以使用"/ Token"端点来交换本地端口的外部访问令牌?哪种方法是正确的?

c# oauth-2.0 asp.net-identity asp.net-identity-2

8
推荐指数
1
解决办法
5368
查看次数

我可以使用在Hololens上运行的HTML制作通用应用吗?

我相信这些说法是正确的:

1)所有通用应用程序都作为全息图工作

2)可以使用HTML/JS构建通用应用程序

这是否意味着我可以使用网络技术构建全息通用应用程序?例如D3.js中的全息可视化仪表板?

win-universal-app hololens

7
推荐指数
1
解决办法
1425
查看次数

Angular 2 - 使用@HostBinding在主机元素上应用ngIf

我正在尝试使用@HostBinding装饰器在主机元素上设置ngIf.

class ListItem {
    @HostBinding('ngIf') active: boolean = false;
}
Run Code Online (Sandbox Code Playgroud)

而且我收到错误:无法绑定到'ngIf',因为它不是'list-item'的已知属性.

但是我在这里看到一个答案似乎暗示了这种用法.

angular

7
推荐指数
1
解决办法
2557
查看次数