ASP.NET MVC 3中模型的ONE属性的默认值

本文关键字:ONE 属性 默认值 模型 NET MVC ASP | 更新日期: 2023-09-27 18:24:47

我有一个简单的合同模型:

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

创建新合同时,我想自动建议下一个可用号码。我在控制器的创建操作中从数据库中获取它。

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() } )

另一种选择是在我的控制器中构造一个Contract对象,但我的不可为null的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的值吗?

ASP.NET MVC 3中模型的ONE属性的默认值

您可以将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 )