2013-05-15 69 views
7

如何在我的编辑框中设置默认值,以便万一我不在框中写入任何内容时,它不会发送空值。如何设置默认值HTML.EditorFor()

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

回答

0

如何定义你的模型有“默认值”,其财产以后财产?在这种情况下,你不需要做任何特别的事情。如果这并不令人满意(例如,您不希望用户在屏幕上看到“默认值”),那么您可以为此模型定制一个自定义模型绑定器,该模型从DefaultModelBinder继承,仅覆盖OnModelUpdated方法,沿线的东西:

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

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

11

最简单的方法是在你的模型构造函数初始化属性:

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说,你不想让最终用户看到默认值,你会有一些其他的解决方案。请让我知道你的目的。

1

而不是使用

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

使用

@Html.TextBoxFor(model => model.UserId, new { @Value = "Prabhat" }) 
18

要显示在一个领域,你必须在这个例子中htmlAttributes分配“值”属性它像一个默认值:

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

确保V中的值为大写。

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

在模型中分配默认值将强制您首先创建模型对象,并为非空值字段(如日期时间)设置默认值,这将使页面显示恼人1/1/1001 00:00:您可以在模型的其余部分使用日期时间字段中的00值。

+0

感谢这就是我一直在寻找。大写字母V帮助了我。为什么他们会这样不一致呢? – JSideris

+0

这将与具有值属性(如输入)的Html元素一起使用。对于像textarea这样的元素,我会推荐Javad_Amiry的解决方案 – CF5