2016-01-19 5 views
-1

Я хочу изменить содержимое элемента модели на странице HTML. Я спасаю DateTime, в базе данных, в следующем формате: ГГГГММДДччммссASP.Net MVC 3 пункт модели

и я хочу, чтобы отобразить, на странице HTML, следующий формат: дд-мм-гггг HH-мм-сс

Как я могу это сделать?

<tr> 
    <td class="labels"> 
    <label>Data/Hora Token Telemóvel:</label> 
    </td> 
    <td> 
    @Html.TextBox("txtBoxNome", @Html.DisplayFor(modelItem => item.cdts_token_phone), new { @readonly = "readonly", @disabled = "disabled"}) 
    </td> 
</tr> 
+0

Отформатируйте дату на контроллере перед отправкой на просмотр. Вы можете увидеть [в другом вопросе] (http://stackoverflow.com/questions/3025361/c-sharp-datetime-to-yyyymmddhhmmss-format), как форматировать дату. –

+0

@DrewKennedy благодарит за ответ. Я знаю, как это делается, что я не знаю, как отправить сообщение. Я заполняю текстовое поле данными, поступающими из базы данных. – akunamatata

+0

Какая система управления базами данных вы используете? Почему бы вам не использовать правильный тип, например DATETIME или DATETIME2? – Alexei

ответ

1

Если я правильно понял, то проблема преобразования строки из базы данных в более соответствующую строку в представлении (через ViewModel):

Вы можете создать свойство в модели, которая разбирает ваши формат с использованием TryParse или TryParseExact (большое предложение от here).

[DisplayFormat(DataFormatString = "{0:dd-MM-yyyy HH-mm-ss}"] 
public DateTime MyDateTime 
{ 
    get 
    { 
     // should be defined as a constant elsewhere 
     string pattern = "yyyyMMddHHmmss"; 
     DateTime dt; 
     if (DateTime.TryParseExact(text, pattern, CultureInfo.InvariantCulture, 
          DateTimeStyles.None, out dt)) 
      return dt; 

     // return a value when format is invalid 
    } 
} 

DisplayFormat атрибут поможет вам непосредственно отображать данные в нужном Вам формате.

+0

спасибо. вы показываете мне, что так, аха, я пошел к модели и добавил частную функцию для преобразования в формат, который я хочу – akunamatata

0

ОК, я сделал это с помощью Алексея. вот мое решение:

[EdmScalarPropertyAttribute(EntityKeyProperty=false, IsNullable=true)] 
    [DataMemberAttribute()] 
    public global::System.String cdts_token_phone 
    { 
     get 
     { 
      return cdtsToDT(_cdts_token_phone); 
     } 
     set 
     { 
      Oncdts_token_phoneChanging(value); 
      ReportPropertyChanging("cdts_token_phone"); 
      _cdts_token_phone = StructuralObject.SetValidValue(value, true, "cdts_token_phone"); 
      ReportPropertyChanged("cdts_token_phone"); 
      Oncdts_token_phoneChanged(); 
     } 
    } 

private string cdtsToDT(string cdtsUT) 
    { 
     if(string.IsNullOrEmpty(cdtsUT)) 
      return string.Empty; 

     DateTime _newDT = new DateTime(int.Parse(cdtsUT.Substring(0, 4)), int.Parse(cdtsUT.Substring(4, 2)), 
       int.Parse(cdtsUT.Substring(6, 2)), int.Parse(cdtsUT.Substring(8, 2)), 
       int.Parse(cdtsUT.Substring(10, 2)), int.Parse(cdtsUT.Substring(12, 2))); 
     string cdts = _newDT.ToString("dd-MM-yyyy HH:mm:ss"); 
     return cdts; 
    } 
Смежные вопросы