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 に答える