ASP.NET / 模型 - 防止模型预填充表单输入字段

Posted

技术标签:

【中文标题】ASP.NET / 模型 - 防止模型预填充表单输入字段【英文标题】:ASP.NET / Model - Prevent model from pre-populating form input fields 【发布时间】:2011-11-28 14:48:38 【问题描述】:

当我在表单中将模型传递给我的视图时,字段会预先填充默认值,特别是如果模型属性是 int 数据类型,是否有办法防止这种情况发生?

例如:

型号:

public class MyModel 
    [Key]
    public int MyKey  get; set; 
    public int MyInt  get; set; 
    public string MyString  get; set; 

控制器:

public class MyController : Controller 
    public ActionResult MyAction(int id) 
        return View(context.MyModel.Single(x=>x.MyKey == id));
    

查看:

@model MyNamespace.MyModel

@using(html.BeginForm())

    @Html.HiddenFor(x=>x.MyKey)
    @Html.EditorFor(x=>x.MyInt)
    @Html.EditorFor(x=>x.MyString)
    <input type="submit" value="Submit />

在视图中,MyInt 的输入字段将预先填充 0,而 MyString 输入将为空。我也希望 MyInt 为空。

编辑:

为了澄清,我只希望在页面加载时输入字段为空,并且不包含其默认值 0

【问题讨论】:

【参考方案1】:

使用int? 代替int 可以让您在输入中保留空值。

附:这是相关的问题,但 DateTime 类型:Setting default values for a Model in MVC3

【讨论】:

哇哦,就这么简单,谢谢你的回答,我会在有能力的时候把它标记为答案!

以上是关于ASP.NET / 模型 - 防止模型预填充表单输入字段的主要内容,如果未能解决你的问题,请参考以下文章

如何根据 asp.net mvc4 中的模型列表填充 ListBox?

如何在 ASP.NET MVC 3 中为填充的下拉列表创建视图模型

从 ASP.NET MVC 复杂模型创建 KnockoutJS 模型

ASP.net MVC - 如何在各种视图中保留模型

我正在使用backbone.stickit 进行模型绑定。如何将预填充选择与模型绑定?

如何防止表单元素在 Chrome 中预填充