【问题标题】:Setting a default value for @Html.TextAreaFor()为@Html.TextAreaFor() 设置默认值
【发布时间】: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


    【解决方案1】:

    这是设置默认值的错误方法。绑定输入的值由ModelState 确定,它本身由RequestViewData/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,因此您必须使用第二个选项,但如果您要处理恒定默认值,则第一个方法会更好。

    请记住,ModelModelState 的最后一个来源,所以如果您执行类似操作参数名为 users_id(不区分大小写)或设置 ViewBag.Users_Id(同样,不区分大小写)的操作,这将优先于其他所有内容。

    【讨论】:

      猜你喜欢
      • 2015-10-02
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多