Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/html/88.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Asp.net mvc DataType.PhoneNumber属性对显示没有影响_Asp.net Mvc_Html_Asp.net Mvc Viewmodel - Fatal编程技术网

Asp.net mvc DataType.PhoneNumber属性对显示没有影响

Asp.net mvc DataType.PhoneNumber属性对显示没有影响,asp.net-mvc,html,asp.net-mvc-viewmodel,Asp.net Mvc,Html,Asp.net Mvc Viewmodel,我在视图模型的字符串上有一个[DataType(DataType.PhoneNumber)]。但是,当显示电话号码时,它会呈现为一个简单的字符串,没有格式 我的视图模型中的另一个字段具有[DataType(DataType.Url)]属性,它正确地呈现为HTML元素 那么,我有两个问题: 为什么DataType.Url修饰字段在 DataType.PhoneNumber字段看起来像一个普通的字符串,没有电话特定的格式 如何将PhoneNumber呈现为有效的电话号码 (例如,类似于(xxx)xx

我在视图模型的
字符串上有一个
[DataType(DataType.PhoneNumber)]
。但是,当显示电话号码时,它会呈现为一个简单的字符串,没有格式

我的视图模型中的另一个字段具有
[DataType(DataType.Url)]
属性,它正确地呈现为HTML元素

那么,我有两个问题:

  • 为什么
    DataType.Url
    修饰字段在
    DataType.PhoneNumber
    字段看起来像一个普通的字符串,没有电话特定的格式

  • 如何将
    PhoneNumber
    呈现为有效的电话号码 (例如,类似于
    (xxx)xxx xxxx
    。如果您告诉我必须使用
    DataFormat
    属性和
    DataFormatString
    ,那么 甚至有一个
    数据类型.PhoneNumber


  • 对于第一个问题,Url有一个特定的语法,如果不遵循该语法,就不会是正确的Url

    电话号码没有任何特定的格式。仅在美国你就可以有

    xxx xxx xxxx

    (xxx)xxx xxxx

    (xxx)xxx xxxx

    xxx.xxx.xxxx

    1(xxx)xxx xxxx

    然后输入带有国家代码前缀的国际号码

    010 64 3 477 4000

    00116434774000

    +6434774000

    所有这些都是有效的电话号码

    input=“tel”
    允许您嵌入电话号码,以便在移动(电话)浏览器中,您可以单击它,它将在拨号程序中预先填充电话号码


    至于数据注释,它们呈现正确的html,它们将具有正确的html5类型标记。这取决于浏览器在屏幕上实际实现它的外观或解释它应该如何验证。

    >甚至拥有DataType.PhoneNumber有什么意义?告诉移动浏览器这是一个可拨打的号码。您的第一个关于电话号码格式变化的观点显然是正确的,并且可以解释为什么没有电话号码的默认呈现。您关于input=“tel”的观点与移动设备无关。所有浏览器,不仅仅是移动浏览器,都可以使用input=“tel”。我在桌面上安装了Skype,并单击input=“tel”打开Skype。您可能没有查看为DataType.PhoneNumber生成的HTML。重点是没有特殊的HTML或格式。它呈现为普通的旧字符串。我要说的是DataType.PhoneNumber的唯一用途是输出“type='tel”进入html。就是这样。这取决于浏览器skype…如何解释。html中不会生成type=“tel”。因此,浏览器无法知道这是一个电话号码。此外,您也不正确,因为DataType.PhoneNumber的唯一用法是呈现input=“tel”(无论如何它都不会这样做)。通过使用DataType.PhoneNumber,我可以在名为PhoneNumber.cshtml的文件中设置自定义显示模板,该模板将由调用,用于所有用[DataType(DataType.PhoneNumber)]修饰的字段。EditorFor()当您用DateType.PhoneNumber装饰模型属性时生成。我的问题不是关于编辑器模板。而是关于显示模板。在我的MVC 5应用程序中,@Html.DisplayNameFor(model=>model.PhoneNumber)生成312551212,零Html将其包装,就像一个普通的旧字符串一样。