HTML 部署的和本地的输出不同

HTML output differs between deployed and local

在我的 Person 模型中我得到了生日 属性:

[DisplayName("Date of Birth")]
[DisplayFormat(DataFormatString = "{0:d}", ApplyFormatInEditMode = true)]
[DataType(DataType.Date)]
public DateTime BirthDate { get; set; }

在“编辑”视图中,我显示了出生日期输入字段:

  <div class="form-group">
            @Html.LabelFor(model => model.BirthDate, htmlAttributes: new { @class = "control-label col-md-2" })
            <div class="col-md-10">
                @Html.EditorFor(model => model.BirthDate, new { htmlAttributes = new { @class = "form-control" } })
                @Html.ValidationMessageFor(model => model.BirthDate, "", new { @class = "text-danger" })
            </div>
        </div>

在本地主机上它产生 HTML:

<input class="form-control text-box single-line valid" data-val="true" data-val-date="The field Date of Birth must be a date." data-val-required="Pole Date of Birth jest wymagane." id="BirthDate" name="BirthDate" type="date" value="2014-10-02">

并且该字段的值在页面加载后显示在浏览器中:

我发布了我的应用程序,但生成的 HTML 略有不同。它不包含单词 valid 并且 value 格式不同:"2/5/2015" 而不是 "2014-10-02"

<input class="form-control text-box single-line" data-val="true" data-val-date="The field Date of Birth must be a date." data-val-required="The Date of Birth field is required." id="BirthDate" name="BirthDate" type="date" value="2/5/2015">

这导致在我通过日期选择器设置之前,日期不会显示在输入字段中。

我希望它的行为方式与本地部署的应用程序相同。

我在波兰,该应用程序已部署到 myasp.net 服务器,我敢打赌这些服务器位于盎格鲁撒克逊国家,日期格式不同。这可能是个问题吗?

我认为你应该在你的 webProject 中手动设置你的文化。这样,将不会应用部署服务器上的区域性设置。

web.config

<globalization uiCulture="pl" culture="pl-PL" />

MSDN - How to: Set the Culture and UI Culture for ASP.NET Web Page Globalization

如果您担心项目的全球化,您也可以更改单个页面的文化

yourPage.aspx

<%@ Page UICulture="pl" Culture="pl-PL" %>

如果您不这样做,您也可以设置一个 自定义 dataFormatString 而不是指向适用于 cultureSetting 的标准格式字符串。

[DisplayFormat(DataFormatString = "{0:yyyy-MM-dd}", ApplyFormatInEditMode = true)]
public DateTime BirthDate { get; set; }