小编Ctr*_*eat的帖子

在LINQ中获取动态OrderBy

我在ASP.NET MVC 3站点中的很多页面中使用数据表.他们使用服务器端分页,现在我想基于列标题实现排序.数据表带有iSortCol_0 哪个是单击列的int值.

我不喜欢这种方法,因为查询最终会像:

if(iSortCol_0 == 0)
{    
    // query
    // OderBy(x => x.CarName)
}
Run Code Online (Sandbox Code Playgroud)

然后对每列重复这一过程(加上每个列的else子句按降序排序).所以我改变了我的方法,现在将列名传递给服务器.

我想出了以下内容:

Expression<Func<vw_Car, string>> sortExpression1 = null;
Expression<Func<vw_Car, int>> sortExpression2 = null;

switch(columnToSort) 
{
    case "InvoiceNo": sortExpression1 = x => x.CarNo; break;
    case "ClientNumber": sortExpression1 = x => x.ForeName; break;
    case "ClientName": sortExpression1 = x => x.SurName; break;
    default: sortExpression2 =  x => x.Age.Value; break;
}

// start of query
.OrderByDir(sortDirection, sortExpression1 , sortExpression2)
Run Code Online (Sandbox Code Playgroud)

现在OrderByDir看起来如下:

public static IOrderedQueryable<T> OrderByDir<T>(this IQueryable<T> source, …
Run Code Online (Sandbox Code Playgroud)

c# linq linq-to-entities entity-framework dynamic-linq

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

.NET中的单元测试服务层

我正在开发一个新的MVC 5应用程序.我的项目中有一个Integration Layer,我有一个外部Web服务的服务引用.

然后我创建了一个有一些方法的接口 - 然后我有一个服务类,如下所示:

public class MyService : IMyService
{
    private readonly ExternalServiceClient _serviceClient;

    public MyService()
    {
        _serviceClient = new ExternalServiceClient ("WSHttpBinding_IMyService");
    }

    public string GetName(Coordinate[] coordinates)
    {
        string name = string.Empty;

        name = _serviceClient.GetInformationsForCoordinates(coordinates);

        return name;
    }
Run Code Online (Sandbox Code Playgroud)

注意这是剥离的,实际上会添加带有异常处理的try catch块等

我有一个Integration.Tests项目,用于集成层的单元测试.测试GetName方法的最佳实践方法是什么?我是否应该在测试项目中向服务的端点添加另一个服务引用,或者如果我们使用Moq,我可以创建一个实际服务的实例,例如Web层将调用 - 以及如何完成?

c# unit-testing design-patterns moq

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

Javascript正则表达式用于清理字符串值

我想用js从字符串中去除无效字符。

我的正则表达式当前如下:

var newString = oldString.replace(/([^a-z0-9 ]+)/gi, '');
Run Code Online (Sandbox Code Playgroud)

即找到az或0-9以外的任何内容以及与大小写无关的空格,并替换为空-但是我也想允许使用下划线(_),连字符(-)和点(.)。

我尝试按以下方式更新我的正则表达式,但未按预期工作-进行更改后,我发现带有方括号()的字符串没有被剥离?

var newString = oldString.replace(/([^a-z0-9 .-_]+)/gi, '');
Run Code Online (Sandbox Code Playgroud)

我是否缺少简单的东西?

javascript regex

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

ASP.NET Core Razor 页面 - 不绑定 POST 请求

我的 Login.cshtml.cs 代码文件中有以下内容:

登录.cshtml.cs

public class LoginModel : PageModel
{
    public string ReturnUrl { get; set; }
    public bool EnableLocalLogin { get; set; } = true;
    public string Username { get; set; }
    public string Password { get; set; }

    private readonly IIdentityServerInteractionService _interaction;

    public LoginModel(IIdentityServerInteractionService interaction)
    {
        _interaction = interaction;
    }

    public IActionResult OnGet(string returnUrl)
    {            
        ReturnUrl = returnUrl;
        return Page();
    }

    public IActionResult OnPost([FromBody]LoginModel model, string button)
    {
        // todo - implement
        return Page();
    }
}
Run Code Online (Sandbox Code Playgroud)

如果我在返回行上有一个断点,OnPost …

c# asp.net-core razor-pages

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

Java中的计时器 - 几分钟/小时减少的问题

我正在开发一个Java倒数计时器.虽然之前已经完成了一些C++,但我对Java完全不熟悉,所以并不是全新的.我遇到了这个问题 - 任何人都可以很容易地看到我在逻辑上做错了什么?

怎么了:

在运行中,如果你以小时为单位输入23,则将分钟留空并放入5秒 - 5秒应该计为0 - 分钟应该是59,小时应该是22.然后一旦5秒过去所有数字去为零.

如果在输入框中我输入了23小时1分钟和5秒/秒 - 当5经过时它变为22小时59分59秒因此我知道它几乎在那里(只是希望我可能错过了一些愚蠢的东西.

最后是逻辑的最后一个问题 - 例如,如果我进入30分钟5秒,当5已经过去时,分钟转到29秒,然后继续倒计时,但小时数转到-1.下面的代码 - 对于很长的帖子感到遗憾,但是想要绘制场景 - 谢谢 - Colly

Integer sec = new Integer (seconds.getText ());
Integer min = new Integer (minutes.getText ());
Integer hr = new Integer (hours.getText ());
int temp1 = sec.intValue ();
int temp2 = min.intValue ();
int temp3 = hr.intValue();

temp1--;
if (temp1 == -1 )
{
    temp1 = 59;
    temp2--;
    if (temp2 == 0 && temp3 != 0)
    {
        temp2 = 59;
    } …
Run Code Online (Sandbox Code Playgroud)

java timer countdown

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

从按钮单击打开一个表单?

我有倒数计时器的用户控制表.我想要一个开始按钮然后启动计时器.然后计时器将是另一种形式的标签.从点击开始按钮启动这个新表单我需要做什么?

c# winforms

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

将foreach转换为linq表达式

我有以下代码将myCar对象列表转换为来自第三方Web服务的Car对象Array,以便我可以将汽车传递给第三方Web服务:

var cars = new Car[myCars.Count];
var count = 0;
foreach (var myCar in myCars)
{
   cars[count] = new Car
   {
      Id = myCar.Id,
      Manufacturer = myCar.Manufacturer,
      Model = myCar.Model
   };
   count++;
}
return cars;
Run Code Online (Sandbox Code Playgroud)

请注意,因为我的myCar对象除了三个第三方Web服务之外还有许多其他功能,我不能做一些简单的事情,例如:

MyClass[] myArray = list.ToArray();
Run Code Online (Sandbox Code Playgroud)

代码正在按预期工作但我想知道Linq中是否有一些东西,比如Select表达式可以使这更好并减少代码?

.net c# linq .net-4.5

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

在MVC下拉列表中使用Bootstrap-select

我试图在我在MVC中开发的Web应用程序中使用Bootstrap-Select来设置下拉列表的样式,使其类似于Bootstrap下拉列表,而我的其他应用程序正在使用Bootstrap。我的布局页面上有一个汽车制造商下拉列表,它调用Html.Action来做一个控制器,并从数据库的表中构建制造商列表,并返回下面的部分视图:-单击以下值之一时的注意事项提交下拉列表,并且用户导航到下一个屏幕。

<script type="text/javascript" src="~/Scripts/bootstrap-select.js"></script>
<link rel="stylesheet" type="text/css" href="~/Content/bootstrap-select.css"/>
<script type="text/javascript">

    $(document).ready(function() {

        $('.selectpicker').selectpicker();

        $('#carManufacturers').change(function () {
            $(this).closest('form').submit();
        });

    });
</script>

@using (Html.BeginForm("Index", "Cars", FormMethod.Post))
{
    @Html.DropDownListFor(model => model.SelectedCarManufacturer, Model.CarManufacturersList, "Select Car Manufacturer", new { id = "carManufacturers", @class = "selectpicker" })
}
Run Code Online (Sandbox Code Playgroud)

这主要是因为Dropdown似乎是在引导程序中设置样式-我不确定的一件事是如何将data-style="btn-inverse"属性添加到我的dropdown-尝试在@ class =“ selectpicker'之后添加逗号并定义它,但是不工作。

同样由于某种原因,Intellisense会在selectpicker下划线并指出“未知的CSS样式selectpicker”?

另外,在渲染下拉菜单时,如下所示-如何摆脱第二个添加的“选择汽车制造商文本”? 在此处输入图片说明

javascript css asp.net-mvc twitter-bootstrap bootstrap-select

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

检查数组的值javascript

我的角度控制器中有以下内容

MyUserService.getUserRoles().then(function (data) {
    var userInValidRole = false;
    var role1 = "Role1";
    var role2 = "Role2";

    if ((data.indexOf(role1) > -1) || data.indexOf(role2 ) > -1) {
        userInValidRole = true;
    }
Run Code Online (Sandbox Code Playgroud)

这是按预期工作的.但是我希望做的事情如下:

var validRoles = ["Role1", "Role"];
Run Code Online (Sandbox Code Playgroud)

然后检查

    if ((data.indexOf(validRoles) > -1)) {
        userInValidRole = true;
    }
Run Code Online (Sandbox Code Playgroud)

然而,它没有按预期工作 - 有什么我做错了吗?

javascript angularjs

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

使用泛型编写类似的逻辑

我有以下方法确定我需要从DB中删除哪些车.

private List<CarDTO> BuildCarsToDelete(IList<CarDTO> newCars, IList<CarDTO> existingCars)
{
    var missingCars = new List<CarDTO>();

    var cars = newCars.Select(c => c.CarId);
    var newCarIds = new HashSet<int>(cars);

    foreach (var car in existingCars)
    {
        //If there are no new cars then it had some and they have been removed
        if (newCars.Count() == 0)
        {
            missingCars.Add(car);
        }
        else
        {
            if (!newCarIds.Contains(car.CarId))
            {
                missingCars.Add(car);
            }
        }
    }

    return missingCars;
}
Run Code Online (Sandbox Code Playgroud)

这可以按我的意愿工作 - 但是如果我想为其他DTO的客户或公寓实现相同的功能,我将复制粘贴代码,但只更改变量名称和DTO类型 - 是否有更好的方法使用generics会保持算法和逻辑,但允许我在任何DTO上使用?

.net c# generics

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