我在其他地方读到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) 在以下代码中:
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个线程将添加到包/列表,另一个线程将删除,但许多线程可以访问.