10

如何在我的编辑器框中设置默认值,以便万一我在框中不写任何内容,它不会发送空值。

 <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")
4

4 回答 4

21

要在字段中显示默认值,您必须在 htmlAttributes 中为其分配“Value”属性,如下例所示:

@Html.EditorFor(model => model.Description,  new { htmlAttributes = new { @class = "form-control", @Value = ViewBag.DefaultDescription } })

确保 Value 中的 V 是大写的。

这样,您将只是在 html 字段上而不是在模型中分配默认值。

在模型中分配默认值会强制您首先创建模型对象,这将为日期时间等不可为空的字段设置默认值,这将使页面显示烦人的 1/1/1001 00:00:00 值您可以在模型的其余部分中拥有的日期时间字段。

于 2014-12-03T16:20:20.603 回答
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; }
}

当您想将其发送到视图时,例如在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 所说,您不想让最终用户看到默认值,您将有一些其他的解决方案。请让我知道你的目的。

于 2013-05-15T10:37:34.970 回答
2

而不是使用

 @Html.EditorFor(model => model.UserId) 

利用

@Html.TextBoxFor(model => model.UserId, new { @Value = "Prabhat" })
于 2014-01-10T07:39:50.953 回答
0

如何将您的模型定义为其某些属性具有“默认值”?在这种情况下,您不需要做任何特别的事情。如果这不令人满意(例如,您不希望用户在屏幕上看到“默认值”),您可以为该模型创建一个继承自 DefaultModelBinder 的自定义模型绑定器,仅覆盖 OnModelUpdated 方法,在其中执行类似于:

model.somthg = string.IsNullOrEmpty(model.somthing) ? "Default Value" : model.somthing

另请注意,据我所知,EditorFor 会忽略您发送给它的自定义 html 属性。

于 2013-05-15T10:13:04.227 回答