【问题标题】:Model that doesn't write pre-populate value to view不将预填充值写入查看的模型
【发布时间】:2019-08-03 06:19:41
【问题描述】:

我正在使用如下模型类

public class Question
{
    public long ID { get; set; }
    public int QuestionNo { get; set; }
    public string Title { get; set; }
    public QuestionTypes QuestionType { get; set; }
    public List<Answer> Answers { get; set; }
}

我在视图中创建了一个文本框,如下所示。

@Html.TextBoxFor(Model => Model.ID);

它使用提供的值预先填充ID,这不是我想要的。我希望文本框在呈现时为空,并且在POST 期间文本框的值应由 ID 属性读取。我怎样才能做到这一点,或者我的设计有问题?

【问题讨论】:

  • “它使用提供的值预填充 ID” - 这就是模型绑定应该如何工作的。如果你想要一个空的&lt;input /&gt;,你需要使用一个可以为空的类型并将其保留为空。
  • @TiesonT。问题 ID 不能为空,这是将答案文本与问题映射的 ID。
  • 我没有看到“答案文本”的模型属性 - 这是正确的模型吗?
  • 你的 ID 属性不是 nullable 所以如果你想保持它为空,那么你应该为 id 属性添加? 可空符号,即public long? ID { get; set; }
  • 如果我正在关注您正在尝试做的事情,我认为您可能需要一个隐藏字段来跟踪问题 ID。 @Html.HiddenFor(Model => Model.ID);

标签: c# asp.net asp.net-mvc razor


【解决方案1】:

好的,,

如果您传递给 View 的 Question 对象已经初始化,那么它将在 ID 属性中具有一些值,并且当您在视图中进行数据绑定时,该值将显示在视图中

所以在将 Question 对象传递给视图之前,请将 ID 的值设置为 null。

这样,当你的 Question 去查看时,它会有 null 值并且 textboxfor 会是空的

【讨论】:

  • 那是设计问题。我创建了一个属性AnswerText 并将其绑定到文本框,从而解决了问题。
猜你喜欢
  • 2012-06-06
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2010-10-30
  • 2015-09-02
  • 1970-01-01
  • 2020-08-24
  • 2021-07-30
相关资源
最近更新 更多