我正在使用asp.net核心剃刀引擎。我正在尝试为文本区域设置默认值。我查看了其他帖子,我似乎遵循了建议。但是,我设置的默认值不会显示。
这是我的.cshtml页面中的代码
@Html.TextAreaFor(d=>d.Users_id, new {@Value =TempData["id"]})
答案 0 :(得分:1)
这是设置默认值的错误方法。绑定输入的值由ModelState
确定,Request
本身由ViewData
,ViewBag
/ 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
,因此您必须使用第二个选项,但如果您正在处理常量默认值,则第一种方法会更好。
请记住,ModelState
是users_id
的最后一个来源,所以如果您执行类似ViewBag.Users_Id
的操作参数(不区分大小写)或设置{{1} (再次,不区分大小写),优先于其他所有内容。