【发布时间】:2017-01-03 20:25:21
【问题描述】:
我正在使用 asp.net core razor 引擎。我正在尝试为文本区域设置默认值。我看过其他帖子,我似乎听从了建议。但是我设置的默认值没有显示出来。
这是我的 .cshtml 页面中的代码
@Html.TextAreaFor(d=>d.Users_id, new {@Value =TempData["id"]})
【问题讨论】:
标签: html asp.net asp.net-mvc razor
我正在使用 asp.net core razor 引擎。我正在尝试为文本区域设置默认值。我看过其他帖子,我似乎听从了建议。但是我设置的默认值没有显示出来。
这是我的 .cshtml 页面中的代码
@Html.TextAreaFor(d=>d.Users_id, new {@Value =TempData["id"]})
【问题讨论】:
标签: html asp.net asp.net-mvc razor
这是设置默认值的错误方法。绑定输入的值由ModelState 确定,它本身由Request、ViewData/ViewBag 和最后Model 的值组成。尽管将 value 属性显式设置为某个值,Razor 仍将使用它在 ModelState 中为该属性找到的任何内容回填该值。
如果你想要一个默认值,那么你可以在属性本身上设置它:
C# 6
public int Users_Id { get; set; } = 1;
C# 上一页
private int? users_Id;
public int Users_Id
{
get { return users_Id ?? 1; }
set { users_Id = value; }
}
或者,在您的操作中手动设置模型的值:
model.Users_Id = TempData["id"];
显然,由于您在此处使用TempData,因此您必须使用第二个选项,但如果您要处理恒定默认值,则第一个方法会更好。
请记住,Model 是 ModelState 的最后一个来源,所以如果您执行类似操作参数名为 users_id(不区分大小写)或设置 ViewBag.Users_Id(同样,不区分大小写)的操作,这将优先于其他所有内容。
【讨论】: