html.editorfor默认值,Html.EditorFor Set Default Value

问题

Rookie question.

I have a parameter being passed to a create view. I need to set a field name with a default value.

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

I need to set this input field with name Id with a default value that is being passed to the view via an actionlink.

So, how can this input field --@Html.EditorFor(model => model.Id) -- get set with a default value.

Would the following work?? Where the number 5 is a parameter I pass into the text field to set default value.

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

回答1:

The clean way to do so is to pass a new instance of the created entity through the controller:

//GET

public ActionResult CreateNewMyEntity(string default_value)

{

MyEntity newMyEntity = new MyEntity();

newMyEntity._propertyValue = default_value;

return View(newMyEntity);

}

If you want to pass the default value through ActionLink

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

回答2:

Here's what I've found:

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

works with a capital V, not a lower case v (the assumption being value is a keyword used in setters typically) Lower vs upper value

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

does not work

Your code ends up looking like this though

Value vs. value. Not sure I'd be too fond of that.

Why not just check in the controller action if the proprety has a value or not and if it doesn't just set it there in your view model to your defaulted value and let it bind so as to avoid all this monkey work in the view?

回答3:

Its not right to set default value in View. The View should perform display work, not more. This action breaks ideology of MVC pattern. So the right place to set defaults - create method of controller class.

回答4:

Better option is to do this in your view model like

public class MyVM

{

int _propertyValue = 5;//set Default Value here

public int PropertyName{

get

{

return _propertyValue;

}

set

{

_propertyValue = value;

}

}

}

Then in your view

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

will work the way u want it (if no value default value will be there)

回答5:

I just did this (Shadi's first answer) and it works a treat:

public ActionResult Create()

{

Article article = new Article();

article.Active = true;

article.DatePublished = DateTime.Now;

ViewData.Model = article;

return View();

}

I could put the default values in my model like a propper MVC addict: (I'm using 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();

}

Can anyone see any downsides to this?

回答6:

Shouldn't the @Html.EditorFor() make use of the Attributes you put in your model?

[DefaultValue(false)]

public bool TestAccount { get; set; }

回答7:

Shove it in the ViewBag:

Controller:

ViewBag.ProductId = 1;

View:

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

回答8:

This worked for me

In Controlle

ViewBag.AAA = default_Value ;

In View

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

回答9:

In the constructor method of your model class set the default value whatever you want.

Then in your first action create an instance of the model and pass it to your view.

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

}

回答10:

This is my working code:

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

my difference with other answers is using Value inside the htmlAttributes array

回答11:

This worked for me:

In the controller

*ViewBag.DefaultValue= "Default Value";*

In the View

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

来源:https://stackoverflow.com/questions/6062528/html-editorfor-set-default-value

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值