Как по-разному отображать столбец даты, когда он равен определенному значению? - PullRequest
0 голосов
/ 27 февраля 2019

В представлении я отображаю столбец даты bcp, и в настоящее время он по умолчанию равен 1900-01-01.Как может в представлении, когда bcp = '1900-01-01' показывать нуль в Editorfor?

Модель:

 public partial class Training_test
    {
[DisplayFormat(DataFormatString = "{0:MM/dd/yyyy}", ApplyFormatInEditMode = true)]
        public System.DateTime bcp { get; set; }

}

Представление:

@Html.EditorFor(model => model.bcp, new { htmlAttributes = new { @class = "  datepicker" } })

SQLСкрипт:

CREATE TABLE Training_test(
    [cart_id] [int] IDENTITY(1,1) NOT NULL,

    [bcp] [date] NOT NULL CONSTRAINT [DF_TrainingChecklist_bcp_1_test]  DEFAULT ('1900-01-01'),

Ответы [ 2 ]

0 голосов
/ 27 февраля 2019

Вам необходим ViewModel для класса Training_test (который, как я предполагаю, является классом модели и будет отображаться в таблицу SQL).В вашем классе ViewModel вы должны выполнить желаемую логику, пока отображает свойство bcp из модели в ViewModel .

, например:

public class ViewModel
{
    //you can use DateTime type like your model
    public string bcp { get; set; }
}

в вашем контроллере:

Training_test result = GetYourDataFromDB(); //retrieve your model data from db

//viewModel acts like a data transfer object and you can apply any formatting
//after the query and before sending the data back to the view
var viewModel = new ViewModel
{
     bcp = result.bcp == DateTime.Parse("1900-1-1") ? null : 
            result.bcp.ToString()
};
return View(viewModel);

и в вашем представлении (просто убедитесь, что тип @model в вашем представлении назначен типу класса ViewModel):

@Html.EditorFor(model => model.bcp, new { htmlAttributes = new { @class = "  datepicker" } })

надеюсь, это поможет.

0 голосов
/ 27 февраля 2019

Почему бы вам не сделать что-то в этом духе, создать вычисляемую переменную на основе вашего значения bcp?Это должно выглядеть так:

   //in your class
  public DateTime BcpStr => bcp.equals(new DateTime(1900,1,1) ? null : bcp; 

   //in your view
  @Html.EditorFor(model => model.BcpStr , new { htmlAttributes = new { @class = "  datepicker" } })
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...