Fad*_*adi 9 asp.net-mvc editorfor razor
如何在我的编辑器中设置默认值,以便在我不在框中写任何内容时它不会发送空值.
<div class="editor-label">
@Html.Label("Description")
</div> // somthing like
<div>@Html.EditorFor(model => model.Description, " Default value ")
@Html.ValidationMessageFor(model => model.Description)
</div>
Run Code Online (Sandbox Code Playgroud)
或者,如果我改为:
@Html.TextBoxFor(Model.somthing, "Default value")
Run Code Online (Sandbox Code Playgroud)
小智 19
要在字段中显示默认值,您必须在htmlAttributes中为其指定"Value"属性,如下例所示:
@Html.EditorFor(model => model.Description, new { htmlAttributes = new { @class = "form-control", @Value = ViewBag.DefaultDescription } })
Run Code Online (Sandbox Code Playgroud)
确保V in Value为大写.
这样,您只需在html字段上分配默认值,而不是在模型中.
在模型中分配默认值会强制您首先创建模型对象,并为非可空字段(如日期时间)设置默认值,这将使页面显示嘈杂的1/1/1001 00:00:00值您可以在模型的其余部分中使用的日期时间字段.
jav*_*iry 12
最简单的方法是在模型构造函数中初始化属性:
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; }
}
Run Code Online (Sandbox Code Playgroud)
当你想将它发送到视图时,例如在PersonController.Create
action-method中:
public ActionResult Create() {
var model = new PersonModel();
return View(model);
}
[HttpPost]
public ActionResult Create(PersonModel model) {
// do something on post-back
}
Run Code Online (Sandbox Code Playgroud)
这就对了.请记住,您必须创建模型的新实例并将其传递给视图以使用它的默认值.因为与此操作方法关联的视图需要一个PersonModel
实例,但是当您使用这样的create方法时:
public ActionResult Create() {
return View();
}
Run Code Online (Sandbox Code Playgroud)
视图没有任何意义(我的意思是null
),所以你的默认值实际上并不存在.
但是如果你想为复杂的目的做这件事,例如使用默认值作为水印,或者如@JTMon所说,你不希望最终用户看到默认值,你将有其他一些解决方案.请让我知道你的目的.
如何将模型定义为其某些属性具有“默认值”?在这种情况下,您不需要做任何特别的事情。如果这不令人满意(例如,您不希望用户在屏幕上看到“默认值”),您可以为该模型创建一个继承自 DefaultModelBinder 的自定义模型绑定器,仅重写 OnModelUpdated 方法,在其中执行以下操作大致如下:
model.somthg = string.IsNullOrEmpty(model.somthing) ? "Default Value" : model.somthing
Run Code Online (Sandbox Code Playgroud)
另请注意,据我所知,EditorFor 会忽略您发送给它的自定义 html 属性。
归档时间: |
|
查看次数: |
40724 次 |
最近记录: |