小编Pau*_*era的帖子

为什么Html.DisplayTextFor忽略DisplayFormatAttribute?

我在其他地方读到DisplayFormat只是以与string.Format相同的方式使用DataFormatString.我试图显示一个长的电话号码; 在控制台应用程序中,以下工作:

const string PhoneFormat = "{0:###-###-####}";
long? phone = 8005551212;
string s = string.Format(PhoneFormat, phone);
Run Code Online (Sandbox Code Playgroud)

s ="800-555-1212"

为什么当我在我的视图中使用它时

@Html.DisplayTextFor(model => model.Patient.Phone)
Run Code Online (Sandbox Code Playgroud)

显示的是8005551212

这是模特......

public class Patient
{
    [DisplayFormat(DataFormatString = "{0:###-###-####}")]
    public long? Phone { get; set; }
}
Run Code Online (Sandbox Code Playgroud)

还试过DisplayFor,这也行不通.

似乎对我有用的唯一方法是

Html.Raw(string.Format("{0:###-###-####}", Model.Patient.Phone))
Run Code Online (Sandbox Code Playgroud)

asp.net-mvc data-annotations

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

使用ConcurrentBag <T>作为ConcurrentDictionary <key,object>的对象是否正确

在以下代码中:

public class SomeItem { }
public class SomeItemsBag : ConcurrentBag< SomeItem > { }
public class SomeItemsList : List< SomeItem > { }
public static class Program
{
    private static ConcurrentDictionary< string, SomeItemsBag > _SomeItemsBag;
    private static ConcurrentDictionary< string, SomeItemsList > _SomeItemsList;

    private static void GetItem(string key)
    {
        var bag = _SomeItemsBag[key];
        var list= _SomeItemsList[key];
        ...
    }
}
Run Code Online (Sandbox Code Playgroud)

我的假设是包是线程安全的而列表不是.这是处理多线程应用程序中的列表字典的正确方法吗?

编辑添加:只有1个线程将添加到包/列表,另一个线程将删除,但许多线程可以访问.

c# multithreading

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