在MVC中停止预先填充表格

时间:2017-01-17 16:30:16

标签: asp.net-mvc razor

在MVC视图中有一个表单并使用HTML帮助程序给出以下代码:

@Html.TextBoxFor(m => m.FirstName, new { id = "firstName", maxlength = "50", @class = "form-input" })

有没有办法阻止此表单自动填充数据字段?我知道它是设计的,在大多数情况下是有帮助的,但在这种情况下,我希望能够关闭该功能。

澄清 - 如果我有一个带有此属性的ViewModel:

    [Display(Name = "First Name")]
    public string FirstName { get; set; }

据我所知,HTMLHelper TextBoxFor允许我使用强类型

m => m.FirstName 

创建输入时。

没关系。但是,如果我在ViewModel中填充了数据,那么它也会在输入字段中显示这些数据,这是设计的,我明白了。

现在,想象一下你想要强类型方面的强度,但没有自动填充数据。

唯一的选择似乎是:

@Html.TextBox("myTextBox", "value goes here", new { @class = "form-control" })  

在名称/ id值方面哪个很脆弱。我更喜欢TextBoxFor的强类型性质,但是如果没有自动显示ViewModel数据的话,就不能这样做。

2 个答案:

答案 0 :(得分:1)

听起来你在这里谈论浏览器行为,所以你要关闭autocomplete。您可以在每个输入的基础上使用它:

@Html.TextBoxFor(m => m.FirstName, new { ..., autocomplete = "off" })

或者你可以在整个表格上做到:

@Html.BeginForm(action, controller, FormMethod.Post, new { autocomplete="off" })

<强> 编辑: 阅读您的评论似乎您正在使用值填充视图模型,并在渲染视图时查看它们。在这种情况下,答案很简单,在将模型传递给视图之前重置模型:

return ViewModel(new TModel());

答案 1 :(得分:0)

将viewmodel传递给控制器​​中的视图时,可以将这些属性设置为空值或null,以便在UI中为空文本框设置。

相关问题