我有一个简单的合同模型:
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的值吗?
您可以将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 )