1

我有一个模型...

public class PatientACOModel
{
    public int EncounterId { get; set; }
    public int PatientId { get; set; }
    public int EMPIID { get; set; }
    public int PopulationPatientID { get; set; }
    public string EditAddOrEditCurrent { get; set; }
    public string FirstName { get; set; }
    public string LastName { get; set; }
    public DateTime? DateOfBirth { get; set; }
    //[UIHint("_PhoneNumFormatter")]
    public string Phone { get; set; }
 }

我想专门格式化我的电话号码。我只想在我的电话号码和可能的其他电话号码上放置一个 UIHint。我不希望所有字符串都被格式化。

我正在尝试这样的事情......

@Model String
@if (Model != null) {
    String.Format("{0: (###) ###-####}", double.Parse(Model.ModelMetadata.Get));
}

那将是我的 UIHint 中引用的显示模板被注释掉了。当我这样做时,我的字符串都没有出现。我究竟做错了什么?

在我的显示模板中,如何获取要解析的字符串然后格式化?

4

1 回答 1

1

首先,我将检查是否_PhoneNumFormatter在以下位置之一定义:

~/Views/Shared/DisplayTemplates/_PhoneNumFormatter.cshtml
~/Views/<Controller>/DisplayTemplates/_PhoneNumFormatter.cshtml

接下来我想你想直接从Model属性格式化字符串值:

@model String

@if (!String.IsNullOrWhiteSpace(Model)) 
{
    @String.Format("{0: (###) ###-####}", Convert.ToInt64(Model))
}

这应该适用于该UIHint属性,我刚刚签入了一个示例应用程序。

代码假定您所在地区的数字不以前导 0 开头,并且该Model属性将包含仅包含数字字符的字符串,如果不是,您应该改进该Convert.ToInt64部分。

希望能帮助到你。

于 2013-02-13T19:51:27.953 回答