为@ Html.TextAreaFor()设置默认值

时间:2017-01-03 20:25:22

标签: html asp.net asp.net-mvc razor

我正在使用asp.net核心剃刀引擎。我正在尝试为文本区域设置默认值。我查看了其他帖子,我似乎遵循了建议。但是,我设置的默认值不会显示。

这是我的.cshtml页面中的代码

@Html.TextAreaFor(d=>d.Users_id, new {@Value =TempData["id"]})

1 个答案:

答案 0 :(得分:1)

这是设置默认值的错误方法。绑定输入的值由ModelState确定,Request本身由ViewDataViewBag / Model和最后value的值组成。尽管明确地将ModelState属性设置为某些内容,但Razor将使用public int Users_Id { get; set; } = 1; 中为该属性找到的任何内容来回填该值。

如果您想要一个默认值,那么您可以在属性本身上设置它:

C#6

private int? users_Id;
public int Users_Id
{
    get { return users_Id ?? 1; }
    set { users_Id = value; }
}

C#上一页

model.Users_Id = TempData["id"];

或者,在您的操作中手动设置值:

TempData

显然,由于您在此处使用Model,因此您必须使用第二个选项,但如果您正在处理常量默认值,则第一种方法会更好。

请记住,ModelStateusers_id的最后一个来源,所以如果您执行类似ViewBag.Users_Id的操作参数(不区分大小写)或设置{{1} (再次,不区分大小写),优先于其他所有内容。