小编Mat*_*ard的帖子

在MVC 3中,我无法获得@ Html.DisplayFor来呈现格式化的字符串

我希望这是一个非常简单的,虽然经过大量的谷歌搜索后,我无法解决这个问题.

我正在使用MVC 3在购物车网站上工作,并使用代码优先的实体框架.我发送的模型是Product对象列表,每个对象都包含以下属性:

[Required(ErrorMessage = "This is a required field.")]
[DataType(DataType.Currency)]
[Range(1.00, 500.00, ErrorMessage = "Products can not be free.")]
[DisplayFormat(DataFormatString = "{0:C}")]
[DisplayName("Price")]
public double Price { get; set; }
Run Code Online (Sandbox Code Playgroud)

我希望DisplayFormat属性会导致视图中的以下行将值格式化为货币(item是循环中的产品对象):

@Html.DisplayFor(modelItem => item.Price)
Run Code Online (Sandbox Code Playgroud)

但这根本不适用格式化.到目前为止,我能够让它工作的唯一方法是使用它:

@String.Format("{0:C}", item.Price)
Run Code Online (Sandbox Code Playgroud)

但如果可能的话,我宁愿使用@ Html.DisplayFor,因为它设计用于处理nulls之类的东西.我知道它会是0或更多.事实上,通过验证它总是有一定数量 - 但我想确保在我继续之前没有更正确的方法.

任何有关这方面的信息将非常感谢!

UPDATE

达林回答并指出它确实有效,这让我回到了实际上发送给视图的地方.我意识到虽然我有一个名为ProductModel的类,它具有DisplayFormat属性,但我实际上正在返回另一个包含产品列表的模型.这叫做ProductListModel,我意识到它返回了Product数据类的列表 - 而不是ProductModel类!

所以最后它实际上非常简单.只是希望我没有浪费半个晚上.感谢鼓励我回去检查一下,达林!

c# asp.net-mvc linq-to-entities entity-framework data-annotations

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

单击Resharper"运行所有测试"按钮与使用键盘快捷键命令时,为什么会出现不同的行为?

我单元测试的代码是指app.config文件中的appsetting.为了满足这个需求,我在我的单元测试项目中添加了一个app.config文件.如果单击"单元测试会话"窗口中的"运行所有测试"图标,我的所有测试都会通过.

我已将"ReSharper.ReSharper_UnitTest_RunSolution"命令映射到Ctrl + Shift + Alt + U. 如果我通过按下这个组合来运行测试,测试全部运行,但是他们找不到appsetting,它通过null返回.

我假设这意味着按钮单击在测试项目的上下文下运行,而命令没有,但我无法确定该命令正在做什么.

我是否映射了错误的命令?

编辑1:我也尝试使用键盘快捷键Alt-RUN(ReSharper的>单元测试>运行所有),以及手动点击菜单,发现这也导致所有单元测试不是找到appsetting,因此失败.单击"单元测试会话"中的"运行所有测试"图标(双绿色箭头)继续正常工作.

编辑2:我意识到我应该嘲笑一个单独的类,无论如何从配置文件中获取appsettings,所以这就是我现在正在做的事情.所以现在单元测试时没有依赖配置文件.

resharper unit-testing

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

如何配置IIS以便在连接到SQL Server时使用用户的域凭据?

我们最近发布了最新版本的Intranet应用程序,它现在使用Windows身份验证作为标准,并且需要能够使用最终用户的域凭据连接到已配置的SQL服务器.

最近我们发现,在几个客户部署中,尽管IIS可以看到用户的域凭据,但它不会将这些凭据传递给SQL服务器.相反,它似乎使用匿名帐户.这是尽管遵循所有正确的步骤(将目录安全性更改为Win Auth,更新Web.Config以使用Win Auth并拒绝匿名用户).

我一直在做大量阅读,这表明我们需要确保Kerberos到位,但我不确定(a)这是多么有效(即它真的是一个要求吗?)或(b)如何去调查它是否已经设置或如何进行设置.

我们的情况是,我们需要能够配置IIS或应用程序为客户工作,或者向客户说明他们需要做些什么才能使其正常工作.

我们已经设法在我们的内部网络上使用测试SQL服务器和开发人员的IIS框重现这一点,所以我们将搞乱这个设置,看看我们是否可以提出解决方案,但是如果有人有任何解决方案聪明的想法,我很高兴听到他们!

我特别想听听人们对Kerberos的看法或建议.这是一项要求,如果是,我该如何向客户概述应该如何配置?

哦,我也看到有几个人提到域名的'经典单跳规则'和传递Windows凭据,但我不知道这实际上有多少重量?

谢谢!

马特

asp.net impersonation kerberos delegation

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

LINQ to Entities ToString() - 所提议的解决方案都不起作用?

我发布这个更多是因为我想了解更多,因为我的解决方法基本上是避免使用LINQ to Entities!如果我可以使用它会很好.所以,如果有人可以开导我..

我正在使用代码优先实体框架作为我的数据模型开发ASP.Net MVC 3应用程序(我的第一个).它将成为一个在线商店,我正在使用'Admin'控制器,作为管理员,您将能够编辑产品等.在添加新产品时,您必须指定一个类别,这意味着下拉列表类别.

我开始时只根据我在这里找到的信息返回ViewBag中的IEnumerable类别集合.这似乎是处理事情的一种非常好的方式.

但我得到了同样的错误,你会在下面看到.因此,根据我在线阅读的建议,我创建了一个专门用于创建新产品和编辑现有产品的独立模型.Categories集合用于在视图中构建下拉列表.

public class ProductModel
{
    public int Id { get; set; }
    public int CategoryId { get; set; }
    public string Name { get; set; }
    public string Description { get; set; }
    public double Price { get; set; }
    public bool IsVisible { get; set; }

    public IEnumerable<SelectListItem> Categories
    {
        get
        {
            return new DataAccess()
                .Categories
                .OrderBy(c => c.Description)
                .Select(c => new SelectListItem
                    {
                        Value = c.Id.ToString(),
                        Text = c.Description …
Run Code Online (Sandbox Code Playgroud)

c# linq-to-entities entity-framework-4.1 asp.net-mvc-3 drop-down-menu

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

是否可以使用Rhino Mocks来存储一个我不关心类型的泛型方法?

我有一个带有以下签名的方法,我想要存根:

async Task<T> MyMethod<T>(SomeClass, bool, string, string, string, params object[])
Run Code Online (Sandbox Code Playgroud)

泛型类型T是我们期望方法返回的类型(从服务器返回的数据被强制转换为类型T).请注意,无法从传入的参数中推断出它; 它必须每次都指定.

我需要在Rhino Mocks中为这个方法创建一个存根,但它希望我提供泛型类型.我希望它适合任何类型的电话.我尝试使用<object>,但它希望使用该特定类型进行调用.

我可以看出为什么这会是一个问题,因为对泛型类型的调用是在编译时处理的,而不是在运行时处理的.

但是,我觉得值得一提,以防万一我错过了一招.

编辑1

我应该已经包含了,现在我已经实现了一个解决方法,我将我的存根构建器包装在一个辅助方法中,这个方法本身就是一个通用的方法.

但问题是,我必须指定类型,然后才能满足该类型.被测系统可能会对我正在存根的方法进行多次调用,我需要一个适合所有类型的"全部捕获".

编辑2

我改进的解决方法是根本不使用Rhino Mocks.相反,我正在使用一个实现接口的模拟类.这样可以轻松实现泛型方法并返回默认值(或在构造期间设置的默认值).我仍然想知道在Rhino Mocks中是否有可能!

c# tdd unit-testing rhino-mocks

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

是否可以为用户部署多个版本的UWP应用程序以使其同时运行?

我们目前有一个内部WPF应用程序,可以为不同部门以不同方式为业务提供服务。我们有一个分阶段的推出过程,它通过以下步骤进行更改:

  • 开发(本地)
  • 阿尔法测试
  • Beta测试
  • 生活

开发人员需要能够运行该应用程序的所有这些版本,并且某些用户访问Beta版本以注销新功能。

当前,这是通过通过ClickOnce部署的Launcher应用程序完成的,该应用程序下载并运行所选版本的客户端二进制文件。该应用程序的每个版本均由相应服务器上的相应Web服务托管(Alpha,Beta,Live)。

有谁知道如何通过UWP做到这一点?我们希望对应用程序进行过时的验证,并考虑对Surface,Windows Phone等的支持。但是在所有情况下,开发人员和用户都应该能够访问应用程序的不同版本,有时甚至可以同时运行它们。

是否支持这种并发部署同一UWP应用程序的多个版本?

c# wpf clickonce uwp

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

是否可以在绘制时取消 Google Maps API 折线?

我已经构建了一个 Google Maps API 工具集,它允许用户在地图上绘制形状,给它们命名并记录区域。完成每个形状后,系统会提示他们为其命名并设置一些其他选项,例如是否在地图上显示标签。

我想为用户提供在放置点时右键单击并取消折线(或多边形)的选项,即在绘制点时。

根据我在文档中阅读的内容,我应该能够检测到用户右键单击了地图,但我不确定如何取消他们正在绘制的叠加层,因为它不会被提交地图,这意味着我将无法将其称为对象。

有任何想法吗?

解决方案

感谢 Molle 博士的解决方案,内容如下:

    ...
    google.maps.event.addListener(_map, "rightclick", function(){
        InitialiseDrawingManager();
    });
}

function InitialiseDrawingManager(){
    if (_drawingManager != null)
        _drawingManager.setMap(null);

    _drawingManager = new google.maps.drawing.DrawingManager();
    _drawingManager.setMap(_map);

    UpdateOverlaySettings();
    ...
Run Code Online (Sandbox Code Playgroud)

javascript google-maps google-maps-api-3

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

我们的数据库怎么会导致SqlPackage失败?(SQL72018)

希望其他人遇到过此问题,因为Google只返回9个错误结果!有关SqlPackage的信息似乎还有点不足.

我们目前正在进行迁移到持续部署环境的过程.作为其中一部分,我们使用数据库项目来存储数据库模式,构建服务器使用SqlPackage.exe通过比较每个项目的.dacpac文件与服务器上托管的关联模式模板数据库来生成升级脚本.

到目前为止,我们有六个数据库(还有更多),除了一个之外它们都工作正常,当SqlPackage为'target'数据库建模时会抛出以下错误:

错误SQL72018:无法导入触发器,但源中存在一个或多个这些对象.

我们唯一能想到的是目标数据库的大小问题; 也许SqlPackage内存不足?它是我们拥有的最大的数据库模式,所以它当然是可行的.如果它是SqlPackage的内存限制,我们如何增加它?

我们将开始从目标数据库和源项目中删除对象,以查看我们是否可以确定它是否符合规模或特定架构对象,但同时我们将非常感谢任何想法和建议!

更新

我刚刚尝试从目标数据库中删除所有触发器,现在它将没有错误地吐出升级脚本.接下来我将尝试仅删除其中的一半,看看我是否可以将其缩小到一个特定的触发器.我怀疑它可能只是模式的大小,这可以追溯到SqlPackage内存问题.

database sql-server database-project sql-server-data-tools

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