小编Mat*_*tio的帖子

我如何根据设备类型更改ASP.NET MVC视图?

我正在通过一些ASP.NET MVC阅读工作,我有一个工作的Web应用程序,我将从WebForms迁移到MVC.我希望在此过程中获得的功能之一是,如果用户来自移动设备,则会返回简化视图.

我无法确定实现这种逻辑的最佳位置.我确信有一种比在每个返回视图的操作中为Browser.IsMobileDevice添加if/else更好的方法.我有什么样的选择呢?

asp.net-mvc views mobile-devices

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

关于Razor中嵌套代码块声明的问题

我最近将一个项目从MVC 1升级到MVC 3,现在我正在尝试使用Razor.

在一个视图中,我有一个foreach代码块,但嵌套的if语句似乎不希望它前面的@.

我原来的代码是:

@foreach(var r in Model.Results) 
{
    string css = r.Result.Count() > 0 ? "fail" : "pass";

    <p class="@css"><strong>@r.Description</strong></p>

    @if(r.Result.Count() > 0) 
    {
        <p>Count: @r.Result.Count()</p>
        <table>
            <thead>
                <tr>
                    <th>ID</th><th>Title</th><th>Description</th>
                </tr>
            </thead>
            <tbody>
            @foreach(var e in r.Result) {
                <tr><td>@e.Id</td><td>@e.Title</td><td>@e.Description</td></tr>
            }
            </tbody>
        </table>
    }
}
Run Code Online (Sandbox Code Playgroud)

我将在@if中遇到运行时错误:在"@"字符后面出现意外的"if"关键字.进入代码后,您不需要使用"@"作为"if"等构造的前缀.

如果我删除@代码运行正常.我期望需要@因为它前面的HTML.更令我困惑的是,在嵌套的foreach之前我确实需要@.这里有什么规则?

razor asp.net-mvc-3

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

启动图像没有出现在使用iOS 9的主屏幕Web应用程序上

我有一个Web应用程序设置为针对Mobile Safari的主屏幕应用程序.我定义了一系列启动图像,它们可以在运行iOS 8的多个iPad和iPhone设备上完美运行.当我在运行iOS 9的设备上设置相同的应用程序时,图像不会出现.

我已经验证了图像在服务器上.我已经在iOS 8和iOS 9设备的主屏幕上删除了应用程序,强制退出Safari,清除缓存,然后将应用程序重新添加到主屏幕.这是作为一个完整性检查完成的,以确保不涉及缓存问题.

我已经回顾了适用于iOS 8的常用方法,看看是否存在可能仍然有效的变体,例如在以下位置找到的变体:

所有这些都让我回到了同样的问题.在运行iOS 8时,我会看到启动图像,但在运行iOS 9时它们不会出现.

还有其他人看到这个问题吗?如果使用运行iOS 9的主屏应用程序为您显示启动图像,您使用的<link>标签是什么?

以下是我目前运行良好的iOS 8运行配置:

<!-- STARTUP IMAGES -->
<!-- iOS 6 & 7 iPad (retina, portrait) -->
<link href="~/assets/images/startup/startup-1536x2008.png" media="(device-width: 768px) and (device-height: 1024px) and (orientation: portrait) and (-webkit-device-pixel-ratio: 2)" rel="apple-touch-startup-image">
<!-- iOS 6 & 7 iPad (retina, landscape) -->
<link href="~/assets/images/startup/startup-2048x1496.png" media="(device-width: 768px) and (device-height: 1024px) and (orientation: landscape) and (-webkit-device-pixel-ratio: 2)" rel="apple-touch-startup-image">
<!-- iOS 6 iPad (portrait) -->
<link href="~/assets/images/startup/startup-768x1004.png" media="(device-width: …
Run Code Online (Sandbox Code Playgroud)

web-applications mobile-safari ios ios9

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

LINQ to Entities无法识别ToArray

我正在尝试编写一个将投影到DTO的查询,其中两个属性是int数组.由于投影中的ToArray()调用,我收到错误.

teams = context
  .Teams
  .Include("TeamDepartments")
  .Include("TeamEmployees")
  .Select(t => new TeamDto
      {
          sourceSystemId = t.TeamId,
          name = t.Name,
          manager = t.EmployeeIdTeamManager,
          teamLead = t.EmployeeIdTeamLead,
          employees = t.TeamEmployees.Select(te => te.EmployeeId).ToArray(),
          departments = t.TeamDepartments.Select(td => td.DepartmentId).ToArray()
       })
  .ToList();
Run Code Online (Sandbox Code Playgroud)

对于两个int []属性的员工和部门,如何获取这些值?现在,我只是撤回团队列表,然后循环遍历它们以创建DTO.

我见过其他类似的问题,但解决方案似乎并不适合我.我怀疑我需要采取额外措施,因为我正在穿越一段关系.

c# linq-to-entities

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

FluentValidation ShouldHaveValidationErrorFor 与 SetCollectionValidator

我在 ASP.NET MVC 项目中使用 FluentValidation 库,从 UI 角度来看,它按预期工作。违反规则会显示正确的错误。

我有一个父类,它有一个验证器和一个集合属性,其中该类型有一个验证器。它在概念上与文档中描述的相同。

我有一个父类的验证器......

public class MyFormValidator : AbstractValidator<MyFormViewModel>
Run Code Online (Sandbox Code Playgroud)

...我有一个收藏MyFormViewModel...

public IList<ChildRow> ChildRowsAdded { get; set; }
Run Code Online (Sandbox Code Playgroud)

...我为该子类的集合创建一个验证器...

public class ChildRowValidator : AbstractValidator<ChildRow>
Run Code Online (Sandbox Code Playgroud)

...并且我在父验证器中使用该子验证器...

RuleFor(m => m.ChildRowsAdded).SetCollectionValidator(new ChildRowValidator());
Run Code Online (Sandbox Code Playgroud)

在编写一些单元测试时,我注意到这ShouldHaveValidationErrorFor并不能确认错误的存在。

_validator.ShouldHaveValidationErrorFor(x => x.ChildRowsAdded, model);
Run Code Online (Sandbox Code Playgroud)

我的测试中的那一行似乎没有看到错误。测试失败并显示消息

FluentValidation.TestHelper.ValidationTestException:预计属性 AllergyRowsAdded 出现验证错误。

如果我手动.Validate()查看结果,我会看到错误。

以前有人遇到过这个吗?ShouldHaveValidationErrorFor在这种情况下我需要采取额外的步骤吗?

asp.net-mvc fluentvalidation

7
推荐指数
2
解决办法
8337
查看次数

在iOS 13 UI测试中访问UIActivityViewController上的按钮会导致崩溃

是否还有其他人在针对iOS 13模拟器或设备的Xcode 11上运行Xcode UI测试时遇到问题,在其中查找UIActivityViewController上的按钮会导致崩溃?

我有多个UI测试,用于验证UIActivityViewController中显示的按钮。他们完成了预期的设置工作,然后使用类似以下内容的按钮进行查找:

XCTAssertTrue(app.buttons["Copy"].exists)
Run Code Online (Sandbox Code Playgroud)

这些测试在iOS 10、11和12上运行良好。如果我尝试在iOS 13模拟器或设备上运行相同的测试,那么当代码尝试访问app.buttons时,执行停止,我将得到一个Thread 1: signal SIGABRT跟随Failed to get matching snapshots: Lost connection to the application (pid 33047).在我尝试访问app.buttons的那一行。

添加等待甚至是老式的睡眠都无济于事。我试图挖掘其他一些悬而未决的查询,XCUIElementTypeQueryProvider以找到没有运气的元素。

如果我调试测试并在测试访问app.buttons之前放置一个断点,并且尝试打印出其中包含的内容,则会收到不同的错误消息。

po app.buttons
    t =    49.37s Requesting snapshot of accessibility hierarchy for app with pid 37576
expression produced error: error: /var/folders/f2/zhwz28mn1hd815pc78kg02q80000gp/T/expr5-3b2971..swift:1:72: error: 'XCUIElementQuery' is not a member type of 'XCTest'
Swift._DebuggerSupport.stringForPrintObject(Swift.UnsafePointer<XCTest.XCUIElementQuery>(bitPattern: 0x10c73f4d0)!.pointee)
Run Code Online (Sandbox Code Playgroud)

这肯定感觉像Xcode错误。还有其他人遇到吗?

如果有人想尝试一下,这里有一些代码。

从视图控制器:

po app.buttons
    t =    49.37s Requesting snapshot of accessibility hierarchy for app with pid 37576 …
Run Code Online (Sandbox Code Playgroud)

xcode ios xcuitest ios13

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

在SQL Server 2005中使用VARCHAR(MAX)和字符串连接

我们其中一个数据库的用户正在尝试向SQL Server 2005数据库提交UPDATE查询,并且文本意外被截断.

被截断的字段是VARBINARY(MAX),用于存储HTML文本.

查询大致是:

UPDATE Story 
SET mainText = CONVERT (VARBINARY (MAX), '[...5000 chars of text...]' 
    + char(47) + char(47)
    + '[...3000 chars of text...]'
    + char(47) + char(47)
    + '[...5000 chars of text...]') 
WHERE storyId = 123456
Run Code Online (Sandbox Code Playgroud)

我在一些实验后发现的是,当我删除字符串连接时,查询按预期工作,并且字段不会被截断.

我能够通过将每个单独的字符串包装在CAST到VARCHAR(MAX)中来解决限制并保持连接,因此如果用户觉得需要使用char(),则有一个选项.

认为,无论何时使用连接运算符,都会发生VARCHAR的隐式转换,并且隐式转换似乎仅限于VARCHAR(8000)而不是VARCHAR(MAX).因此,在将字符串发送到CONVERT函数之前,它已经被截断为8000个字符.

如果我是对的,有没有办法改变这种行为?

如果没有办法改变行为,除了CAST之外还有另一种方法可以解决这个问题吗?

t-sql sql-server-2005

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

新定义的C#数组的顺序

在C#3.0中,当我以下面的方式将一个字符串数组传递给一个方法时,我将保留它定义它们的顺序,还是存在顺序可以改变的条件?这是否记录在某个我没见过的地方?

CalculateOmniturePageName(new[] { Model.GetOmnitureDomain(), Model.SectionTitle, Model.Title })
Run Code Online (Sandbox Code Playgroud)

c# arrays

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

运行多个HealthKit样本查询的更好方法是什么?

我有一个场景,我需要从HealthKit中检索多组数据 - 体温,体重和血压.在我可以继续处理之前,我需要全部3,因为它们最终将以PDF格式结束.

我的天真第一种方法是运行一种,然后在HKSampleQuery的resultsHandler中调用第二种方法,然后在结果中调用第三种方法.感觉有点 - 我不知道 - 感觉我错过了什么.

是否有更好的方法或天真的方法是否合理?

ios healthkit hksamplequery

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

我可以在MVC项目中使用Glimpse显示Application或Cache对象的内容吗?

ASP.NET WebForms跟踪输出有一个Application State部分.是否可以使用Glimpse看到相同的内容?

在我的家庭控制器的Index()方法中,我尝试添加一些测试值,但我没有在任何Glimpse选项卡中看到输出.

ControllerContext.HttpContext.Application.Add("TEST1", "VALUE1");
ControllerContext.HttpContext.Cache.Insert("TEST2", "VALUE2");
Run Code Online (Sandbox Code Playgroud)

我也没有在文档中看到任何内容.

asp.net-mvc-3 glimpse

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