Html.EditorFor设置默认值

菜鸟问题。 我有一个parameter passing给创build视图。 我需要设置一个默认值的字段名称。 @ Html.EditorFor(model => model.Id)我需要设置这个input字段的名称Id与默认值,通过一个动作链接传递给视图。

那么,这个input字段(@ Html.EditorFor(model => model.Id))如何被设置为一个默认值。

下面的工作? 数字5是一个参数,我传递到文本字段设置默认值。

@Html.EditorFor(c => c.PropertyName, new { text = "5"; }) 

干净的方法是通过控制器传递创build实体的新实例:

 //GET public ActionResult CreateNewMyEntity(string default_value) { MyEntity newMyEntity = new MyEntity(); newMyEntity._propertyValue = default_value; return View(newMyEntity); } 

如果你想通过ActionLink传递默认值

 @Html.ActionLink("Create New", "CreateNewMyEntity", new { default_value = "5" }) 

这是我发现的:

 @Html.TextBoxFor(c => c.Propertyname, new { @Value = "5" }) 

使用大写的V,而不是小写的v(假定值是通常在setter中使用的关键字) lower vs upper value

 @Html.EditorFor(c => c.Propertyname, new { @Value = "5" }) 

不起作用

你的代码最终看起来像这样

 <input Value="5" id="Propertyname" name="Propertyname" type="text" value="" /> 

价值与价值。 不知道我会太喜欢那个。

为什么不只是检查控制器的行为,如果proprety有价值与否,如果它不只是在你的视图模型中设置它的默认值,并让它绑定,以避免所有这个猴子在视图中工作?

它不适合在View中设置默认值。 视图应该执行显示工作,而不是更多。 这个动作打破了MVC模式的思想。 所以设置默认值的地方 – 创build控制器类的方法。

更好的select是在你的视图模型中这样做

 public class MyVM { int _propertyValue = 5;//set Default Value here public int PropertyName{ get { return _propertyValue; } set { _propertyValue = value; } } } 

然后在你看来

 @Html.EditorFor(c => c.PropertyName) 

将按照你想要的方式工作(如果没有值的默认值将在那里)

我刚刚做了这个(沙迪的第一个答案),它的工作原理是:

  public ActionResult Create() { Article article = new Article(); article.Active = true; article.DatePublished = DateTime.Now; ViewData.Model = article; return View(); } 

我可以把默认值放在我的模型中,像propper MVC addict :(我正在使用entity framework)

  public partial class Article { public Article() { Active = true; DatePublished = Datetime.Now; } } public ActionResult Create() { Article article = new Article(); ViewData.Model = article; return View(); } 

任何人都可以看到这个缺点吗?

不应该@Html.EditorFor()使用你放在模型中的属性吗?

 [DefaultValue(false)] public bool TestAccount { get; set; } 

在模型类的构造函数方法中,设置默认值。 然后在你的第一个动作中创build一个模型的实例,并将其传递给你的视图。

  public ActionResult VolunteersAdd() { VolunteerModel model = new VolunteerModel(); //to set the default values return View(model); } [HttpPost] [ValidateAntiForgeryToken] public ActionResult VolunteersAdd(VolunteerModel model) { return View(model); }