Html.EditorFor设置默认值

时间:2011-05-19 17:30:00

标签: c# asp.net-mvc asp.net-mvc-3

菜鸟问题。 我有一个参数传递给创建视图。我需要设置一个默认值的字段名称。  @ Html.EditorFor(model => model.Id) 我需要设置名为Id的输入字段,其默认值通过actionlink传递给视图。

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

以下是否有效?数字5是参数,我将其传入文本字段以设置默认值。

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

12 个答案:

答案 0 :(得分:97)

这是我发现的:

@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有一个值,如果它不是只在你的视图模型中将它设置为你的默认值并让它绑定,以避免所有这些猴子工作观点?

答案 1 :(得分:57)

这样做的干净方法是通过控制器传递创建实体的新实例:

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

答案 2 :(得分:15)

在View中设置默认值是不对的。 View应该执行显示工作,而不是更多。这一行动打破了MVC模式的意识形态。所以设置默认值的正确位置 - 创建控制器类的方法。

答案 3 :(得分:14)

更好的选择是在您的视图模型中执行此操作,如

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

然后在你看来

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

将以您想要的方式工作(如果没有值默认值)

答案 4 :(得分:3)

我刚刚做了这个(Shadi的第一个回答)并且它有效:

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

我可以将默认值放在我的模型中,就像一个propper MVC上瘾者:(我正在使用实体框架)

    public partial class Article
    {
        public Article()
        {
            Active = true;
            DatePublished = Datetime.Now;
        }
    }

    public ActionResult Create()
    {
        Article article = new Article();
        ViewData.Model = article;
        return View();
    } 

任何人都可以看到这方面的任何缺点吗?

答案 5 :(得分:3)

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

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

答案 6 :(得分:2)

将其推到ViewBag

控制器:

ViewBag.ProductId = 1;

查看:

@Html.TextBoxFor(c => c.Propertyname, new {@Value = ViewBag.ProductId})

答案 7 :(得分:1)

对我来说,我需要将当前日期和时间设置为默认值,这解决了我在View中添加此代码的问题:

<div class="form-group">
        @Html.LabelFor(model => model.order_date, htmlAttributes: new { @class = "control-label col-md-2" })
        <div class="col-md-10">
            @Html.EditorFor(model => model.order_date, new { htmlAttributes = new { @class = "form-control",@Value= DateTime.Now }  })
                @Html.ValidationMessageFor(model => model.order_date, "", new { @class = "text-danger" })
                
            </div>
        </div>

答案 8 :(得分:0)

在模型类的构造函数方法中,根据需要设置默认值。 然后在第一个操作中创建模型的实例并将其传递给您的视图。

    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);
    }

答案 9 :(得分:0)

这是我的工作代码:

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

我与其他答案的区别是在htmlAttributes数组中使用Value

答案 10 :(得分:0)

这对我有用

处于控制状态

 ViewBag.AAA = default_Value ;

可见

@Html.EditorFor(model => model.AAA, new { htmlAttributes = new { @Value = ViewBag.AAA } }

答案 11 :(得分:0)

这对我有用:

在控制器中

*ViewBag.DefaultValue= "Default Value";*

在视图中

*@Html.EditorFor(model => model.PropertyName, new { htmlAttributes = new { @class = "form-control", @placeholder = "Enter a Value", @Value = ViewBag.DefaultValue} })*