Html.EditorFor设置默认值

Nat*_*ate 73 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"; })
Run Code Online (Sandbox Code Playgroud)

Khe*_*pri 99

这是我发现的:

@Html.TextBoxFor(c => c.Propertyname, new { @Value = "5" })
Run Code Online (Sandbox Code Playgroud)

使用大写V,而不是小写v(假设值是通常在setter中使用的关键字)较低与较高值

@Html.EditorFor(c => c.Propertyname, new { @Value = "5" })
Run Code Online (Sandbox Code Playgroud)

不起作用

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

<input Value="5" id="Propertyname" name="Propertyname" type="text" value="" />
Run Code Online (Sandbox Code Playgroud)

价值与价值.不确定我是不是太喜欢那个.

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

  • **从不使用HtmlHelper方法设置value属性。在将模型传递给视图之前,可以在GET方法中设置属性的值。 (3认同)

Sha*_*adi 60

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

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

    return View(newMyEntity);
}
Run Code Online (Sandbox Code Playgroud)

如果要通过ActionLink传递默认值

@Html.ActionLink("Create New", "CreateNewMyEntity", new { default_value = "5" })
Run Code Online (Sandbox Code Playgroud)


Ant*_*nov 16

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


Muh*_*hid 14

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

public class MyVM
{
   int _propertyValue = 5;//set Default Value here
   public int PropertyName{
       get
       {
          return _propertyValue;   
       }
       set
       {
           _propertyValue = value;
       }
   }
}
Run Code Online (Sandbox Code Playgroud)

然后在你看来

@Html.EditorFor(c => c.PropertyName)
Run Code Online (Sandbox Code Playgroud)

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