В ожидании, когда вы четко определите проблему, вот полный пример работы счетчика, который на самом деле не соответствует тому, что вы описываете в своем вопросе:
Модель:
public class MyViewModel
{
[DisplayName("As Configured On:")]
[DisplayFormat(DataFormatString = "{0:d}", ApplyFormatInEditMode = true)]
public DateTime ConfigDate { get; set; }
}
Контроллер:
public class HomeController : Controller
{
public ActionResult Index()
{
var model = new MyViewModel
{
ConfigDate = DateTime.Now
};
return View(model);
}
[HttpPost]
public ActionResult Index(MyViewModel model)
{
return View(model);
}
}
Просмотр:
<% using (Html.BeginForm()) { %>
<%= Html.EditorFor(x => x.ConfigDate) %>
<input type="submit" value="OK" />
<% } %>
Вы можете отправить форму столько, сколько пожелаете, форматирование будет сохранено.
ОБНОВЛЕНИЕ:
После предоставления дополнительной информации вот почему возникает проблема.Когда вы перенаправляете на действие Details
с помощью return RedirectToAction("Details", avm);
, к URL-адресу применяется параметр строки запроса:
http://localhost:1114/Airplanes/Details?ConfigDate=11/30/2010%2000:00:00
Обратите внимание, как включен час, и это нормально.Теперь, когда вы возвращаете представление в действии Details
GET, помощник HTML, отвечающий за создание шаблона редактора, выполнит следующие задачи:
Проверьте, есть ли параметр ConfigDate (либо GET, либо POST).Если ничего не найдено, проверьте значение модели, которое передается представлению, и используйте свойство ConfigValue
модели и сгенерируйте текстовое поле.
Поскольку в строке запроса найдено ConfigValue, модель не являетсяиспользуется на всех.Поэтому он просто берет значение, переданное в перенаправлении, которое также содержит время, и использует его для привязки к нему.