我怎么能在我的editorboxes设置的默认值,这样的情况下,我不写在箱子东西它不会发送一个空值。
<div class="editor-label">
@Html.Label("Description")
</div> // somthing like
<div>@Html.EditorFor(model => model.Description, " Default value ")
@Html.ValidationMessageFor(model => model.Description)
</div>
或者,如果我更改为:
@Html.TextBoxFor(Model.somthing, "Default value")
要显示的字段必须指定“值”属性在htmlAttributes它就像这个例子的默认值:
@Html.EditorFor(model => model.Description, new { htmlAttributes = new { @class = "form-control", @Value = ViewBag.DefaultDescription } })
请确保值在V是大写的。
这样,你只会被分配在HTML领域,而不是在模型中的默认值。
模型中的力,你指定默认值先创建模型对象,这将设置默认值不可为空的字段,如日期时间,这将使页面显示annoyings在1001年1月1日00:00:00值日期时间字段,你可以在模型的其余部分。
最简单的方法是在你的模型构造函数来初始化属性:
public class PersonModel {
public PersonModel () {
FirstName = "Default first name";
Description = "Default description";
}
public int Id { get; set; }
public string FirstName { get; set; }
public string LastName { get; set; }
public string Description { get; set; }
}
而当你想将它发送到视图,例如在PersonController.Create
动作方法:
public ActionResult Create() {
var model = new PersonModel();
return View(model);
}
[HttpPost]
public ActionResult Create(PersonModel model) {
// do something on post-back
}
这就对了。 请记住,你必须创建模型的一个新实例,并把它传递给视图中使用它的默认值。 由于考虑到与这种操作方法有关,需要一个PersonModel
实例,但是当你使用create方法是这样的:
public ActionResult Create() {
return View();
}
认为没有什么(我的意思是null
),所以您的默认值是不存在的事实。
但是,如果你想为复杂的目的,为此,使用例如,作为水印默认值,或作为@JTMon说,你不希望最终用户看到的默认值,你将有一些其他的解决方案。 请让我知道你的目的。
而不是使用
@Html.EditorFor(model => model.UserId)
使用
@Html.TextBoxFor(model => model.UserId, new { @Value = "Prabhat" })
如何定义你的模型有“默认值”,其财产以后财产? 在这种情况下,你不需要做什么特别的事情。 如果不是令人满意的(例如,您不希望用户在屏幕上看到“默认值”),你可以有这种模式,从DefaultModelBinder继承的自定义模型绑定,覆盖只是OnModelUpdated方法,它做沿着线的东西:
model.somthg = string.IsNullOrEmpty(model.somthing) ? "Default Value" : model.somthing
另请注意,EditorFor忽略自定义HTML属性,你发送给它的据我所知。