Значение по умолчанию для ОДНОГО свойства модели в ASP .NET MVC 3 - PullRequest
1 голос
/ 15 февраля 2012

У меня есть простая модель для контракта:

public class Contract
{
    public int Number { get; set; }
    public DateTime DateSigned { get; set; }
}

При создании нового договора я хотел бы автоматически предложить следующий доступный номер. Я получаю его из базы данных в действии Create моего контроллера.

public Create()
{
    ViewBag.SuggestNum = /* ... */;
    return View();
}

В моем представлении у меня есть редактор для моего номера и моей даты:

@Html.EditorFor( m => m.DateSigned )
@Html.EditorFor( m => m.Number )

Я пробовал оба из них, но, похоже, они никак не влияют на итоговый html:

@Html.EditorFor( m => m.Number, new { @value = ViewBag.SuggestNum.ToString() } ) 
@Html.EditorFor( m => m.Number, new { @Value = ViewBag.SuggestNum.ToString() } )

Другим вариантом является создание объекта Контракта в моем контроллере, но тогда редактор моего необнуляемого свойства DateTime по умолчанию будет 01.01.0001, а не пустым:

public Create()
{
    var SuggestNum = /* ... */;

    // The new object has a DateSigned property with the default value of 01.01.0001
    return View( new Contract() { Number = SuggestNum }); 
}

Так что это тоже не работает.

Есть идеи, как установить значение редактора моего свойства Number, но не моего DateSigned?

1 Ответ

1 голос
/ 15 февраля 2012

Вы можете сделать свойство DateSigned Nullable<DateTime>:

public class Contract
{
    public int Number { get; set; }

    [Required]
    public DateTime? DateSigned { get; set; }
}

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

public ActionResult Create()
{
    var suggestNum = ... fetch from db
    return View( new Contract() { Number = suggestNum }); 
}

и по вашему мнению:

@Html.EditorFor( m => m.DateSigned )
@Html.EditorFor( m => m.Number )
...