小编Bla*_*ise的帖子

如何为jquery输入掩码设置autoUnmask?

我在文本框上放置了一个货币输入掩码.

但是当提交表单时,需要删除前导'$'符号和分隔逗号,以便可以将值绑定为十进制.

下面是我如何设置autoUnmask中所描述这里.

$('[data-mask="currency"]').inputmask({alias:"currency",'autoUnmask':true});
Run Code Online (Sandbox Code Playgroud)

这似乎没有效果.

设置的正确方法是什么autoUnmask

jquery jquery-inputmask

3
推荐指数
1
解决办法
2496
查看次数

如何对 FileContentResult 进行单元测试?

我有一个将数据导出到 CSV 文件的方法。

public FileContentResult Index(SearchModel search)
{    
    ...
    if (search.Action == SearchActionEnum.ExportToTSV)
    {
        const string fileName = "Result.txt";
        const string tab = "\t";
        var sb = BuildTextFile(result, tab);
        return File(new UTF8Encoding().GetBytes(sb.ToString()), "text/tsv", fileName);
    }
    if (search.Action == SearchActionEnum.ExportToCSV)
    {
        const string fileName = "Result.csv";
        const string comma = ",";
        var sb = BuildTextFile(result, comma);
        return File(new UTF8Encoding().GetBytes(sb.ToString()), "text/csv", fileName);
    }
    return null;
}
Run Code Online (Sandbox Code Playgroud)

我在 NUnit 中的测试:

[Test]
public void Export_To_CSV()
{
    #region Arrange
    ...
    #endregion

    #region Act

    var result …
Run Code Online (Sandbox Code Playgroud)

c# asp.net-mvc nunit unit-testing

3
推荐指数
1
解决办法
3678
查看次数

.NET Core 1.0.0 RC2 中 OpenIdConnectOptions 中的通知在哪里?

看起来 RC2 中有重大变化。

我试图使用这部分旧代码来设置 OpenId 连接:

app.UseOpenIdConnectAuthentication(options =>
{
    options.ClientId = Configuration.Get("AzureAd:ClientId");
    options.Authority = String.Format(Configuration.Get("AzureAd:AadInstance"), Configuration.Get("AzureAd:Tenant"));
    options.PostLogoutRedirectUri = Configuration.Get("AzureAd:PostLogoutRedirectUri");
    options.Notifications = new OpenIdConnectAuthenticationNotifications
    {
        AuthenticationFailed = OnAuthenticationFailed,
    };
});
Run Code Online (Sandbox Code Playgroud)

但是 lambda 选项设置不可用。

如果我尝试使用新的OpenIdConnectOptions.

var clientId = Configuration.GetSection("AzureAD:ClientId").Value;
var azureADInstance = Configuration.GetSection("AzureAD:AzureADInstance").Value;
var tenant = Configuration.GetSection("AzureAD:Tenant").Value;
var postLogoutRedirectUrl = Configuration.GetSection("AzureAD:PostLogoutRedirectUrl").Value;

var authority = $"{azureADInstance}{tenant}";
app.UseCookieAuthentication(new CookieAuthenticationOptions());
app.UseOpenIdConnectAuthentication(new OpenIdConnectOptions
{
    ClientId = clientId,
    Authority = authority,
    PostLogoutRedirectUri = postLogoutRedirectUrl,

});
Run Code Online (Sandbox Code Playgroud)

没有Notifications。有谁知道新设置是什么?


更新

根据 Pinpoint 的回答,这是我更新的代码:

app.UseOpenIdConnectAuthentication(new OpenIdConnectOptions
{ …
Run Code Online (Sandbox Code Playgroud)

asp.net-core-mvc asp.net-core

3
推荐指数
1
解决办法
1993
查看次数

如何在BreezeController中调用SaveChanges()?

似乎所有现有的breezejs示例都是将实体模型传递给BreezeController.

但几乎所有我们构建的页面都使用某种形式的视图模型.在我们没有BreezeJs的日子里,我们从存储库中检索数据(域模型)以填充(使用AutoMapper或手动)视图模型,该模型仅包含该视图的必要数据.WebAPI仅将视图模型数据发送到浏览器,我们可以在其中填充客户端视图模型(通常是knockout可观察的).

保存数据时,我们从a收集数据<form>以填充输入视图模型,仅将该数据发送到服务器,其中输入视图模型中的数据映射到域模型.通过调用存储库中SaveChanges()DbContext实体来保存更新.

现在,BreezeJs是通过创建一个来接管我们所有的存储库代码EFContextProvider.我见过的例子通常会检索域模型数据,然后将其全部传递给客户端.

[HttpGet]
    public IQueryable<Item> Items() {
        return _contextProvider.Context.Items;
    }
Run Code Online (Sandbox Code Playgroud)

构建视图模型是客户端javascript的工作.

当然,我们可以在服务器端构建视图模型:

[HttpGet]
public List<ItemViewModel> Items() {
    var items = _contextProvider.Context.Items
                  .Include("RelatedEntity")
                  .ToList();
    var model = new List<ItemViewModel>();
    .... some code to build model from items ....
    return model;
}
Run Code Online (Sandbox Code Playgroud)

好处是通过网络传输的数据更少,我们可以在服务器端进行许多操作.但我不知道修改这个是否是一个好习惯BreezeController.但至少,它返回列出所有项目所需的数据.

当我尝试POST数据时,真正的麻烦来了.

在我发现的BreezeJs示例中,他们使用a ko.observableArray()来存储所有域模型数据,比方说vm.items.然后将新记录newItem构建manager.createEntity到域模型中.在验证数据之后item.entityAspect.validateEntity(),将newItem其推入vm.itemsmanager.saveChanges()调用,它以某种方式SaveChanges()在BreezeController上调用.

    [HttpPost] …
Run Code Online (Sandbox Code Playgroud)

asp.net-mvc-4 asp.net-web-api knockout.js breeze

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

SELECT和WHERE LINQ子句可以组合吗?

以下是我对Select用户进入模型的所有操作,然后删除所有null记录:

        model.Users = users
            .Select(u =>
        {
            var membershipUser = Membership.GetUser(u.UserName);
            return membershipUser != null
                ? new UserBriefModel
                {
                    Username = u.UserName,
                    Fullname = u.FullName,
                    Email = membershipUser.Email,
                    Roles = u.UserName.GetRoles()
                }
                : null;
        })
            .Where(u => u != null)
            .ToList();
Run Code Online (Sandbox Code Playgroud)

想知道是否有办法结合使用SELECTWHERE子句.

我试过了:

        model.Users = users
            .Select(u =>
            {
                var membershipUser = Membership.GetUser(u.UserName);
                if (membershipUser != null)
                    return new UserBriefModel
                    {
                        Username = u.UserName,
                        Fullname = u.FullName,
                        Email = membershipUser.Email,
                        Roles = …
Run Code Online (Sandbox Code Playgroud)

c# linq

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

如何在LINQ语句中使用Extension方法?

我有一个转换Address为oneline字符串的扩展方法:

public static class AddressExtensions
{
    public static string ToOneLine(this Address address)
    {
        var sb = new StringBuilder();
        sb.Append(address.Street);
        if (!string.IsNullOrWhiteSpace(address.City)) sb.Append(string.Format("{0}, ",address.City));
        if (!string.IsNullOrWhiteSpace(address.State)) sb.Append(string.Format("{0}, ", address.State));
        if (!string.IsNullOrWhiteSpace(address.Zip)) sb.Append(string.Format("{0}, ", address.Zip));
        return sb.ToString();
    }
}
Run Code Online (Sandbox Code Playgroud)

然后我用它将数据从域模型传输到我的DTO.下面的代码使用foreach和工作正常:

var entity=_repository.GetAll();
var model = new List<SummaryViewModel>();
        foreach (var e in entity)
        {
            model.Add(new SummaryViewModel
            {
                Address = e.Address.ToOneLine(),
                Name = e.Name,
                Id = e.Id
            });
        }
Run Code Online (Sandbox Code Playgroud)

但是在使用时LINQ,

        var model = entity.Select(e => new SummaryViewModel
        { …
Run Code Online (Sandbox Code Playgroud)

c# linq foreach entity-framework

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

如何在没有模式信息的情况下将C#对象序列化为xml?

这是我所做的:

可序列化的类:

[Serializable()]
public class Ticket
{
    public string   CitationNumber { get; set; }
    public decimal Amount { get; set; }
}
Run Code Online (Sandbox Code Playgroud)

然后将模型序列化为xml:

var model = cart.Citations
    .Select(c => new Ticket(c.Number, c.Amount)).ToList();
var serializer = new XmlSerializer(typeof (List<Ticket>));
var sw = new StringWriter();
serializer.Serialize(sw, model);
return sw.ToString();
Run Code Online (Sandbox Code Playgroud)

输出sw.ToString()就像

<?xml version="1.0" encoding="utf-16"?>
<ArrayOfTicket xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema">
<Ticket>
<CitationNumber>00092844</CitationNumber>
<Amount>20</Amount>
</Ticket>
</ArrayOfTicket>  
Run Code Online (Sandbox Code Playgroud)

有没有一种方法可以自定义Serialize()输出以删除那些模式信息,例如:<?xml version="1.0" encoding="utf-16"?>xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema"

以及如何将根元素更改ArrayOfTicket为其他内容?

我可以控制这些输出吗?

c# xml serialization

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

如何在ngOptions中连接字符串?

只是好奇我们是否可以在里面执行文本连接ng-options.

<select
      ...
    ng-options="i.month | dnrMonthName + i.year for i in vmAdd.options.allMonths">
</select>
Run Code Online (Sandbox Code Playgroud)

以便获得一个下拉列表,其中包含以下值:

2015年5月

可能吗?那怎么写ng-options呢?

angularjs

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

如何使用AngularJS在下拉列表中添加占位符选项

<select>输入中,我们可以添加一个禁用选项作为占位符:

<select>
    <option value="" disabled selected>Select your option</option>
    <option value="1">January</option>
    ...
</select>
Run Code Online (Sandbox Code Playgroud)

但是我们如何在<select>由AngularJS构建的禁用选项中添加,ng-options从控制器提供?

<select class="month" id="month"
        ng-model="vm.month"
        ng-options="m for m in vm.months">  
</select>
Run Code Online (Sandbox Code Playgroud)

angularjs

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

如何在knockoutjs可观察数组上使用underscorejs _.where?

我需要通过Id在报告可观察数组中找到报告.我怎么写这个underscore陈述?

我在用:

_.where(reports(), {id:data.ReportId})
Run Code Online (Sandbox Code Playgroud)

_.where(reports(), {id:ko.observable(data.ReportId)})
Run Code Online (Sandbox Code Playgroud)

它总是返回一个空数组.

然后我发现了一些underscoreKO.js,但它仍然无法奏效.有人能帮我吗?谢谢.


还有另外一个类似的帖子在这里,但他们不完全一样.ko.utils.arrayFirst可以找到该项目,但不会帮助我更新它.


正确答案来自Daniel A. White,稍有改动.谢谢.

一个修正:

var record = _.filter(reports(), function (item) { return item.id() == data.ReportId; })
if (record.length > 0) {
    _.first(record).reportStatus("Approved");
}
Run Code Online (Sandbox Code Playgroud)

我发现它必须item.id()不仅仅是id().但感谢丹尼尔一百万!

underscore.js knockout.js

0
推荐指数
1
解决办法
2539
查看次数

我可以在扩展方法中使用泛型T吗?

试图模仿这篇文章:创建将T限制为枚举的通用方法

public static string[] ToTextArray(this Dictionary<string, T> dictionary) where T:struct, IConvertible
{
    ...
}
Run Code Online (Sandbox Code Playgroud)

看来我T无法解决.为所有Dictionary<string, enum_type>类编写扩展方法的正确方法是什么?

c# generics enums

-1
推荐指数
1
解决办法
48
查看次数