Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/asp.net-mvc/17.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 不向控制器发送数据的编辑器_C#_Asp.net Mvc_Asp.net Mvc 3_Editorfor - Fatal编程技术网

C# 不向控制器发送数据的编辑器

C# 不向控制器发送数据的编辑器,c#,asp.net-mvc,asp.net-mvc-3,editorfor,C#,Asp.net Mvc,Asp.net Mvc 3,Editorfor,我有以下代码: @Html.EditorFor(model => model.NoteRateGreaterThan, null, "advSearchInput", null) 问题是,当post完成时,我为“NoteRateGreaterThan”输入的值没有填充到发送给控制器的模型中。但是,当我将其更改回: @Html.EditorFor(model => model.NoteRateGreaterThan) 它起作用了 我需要能够使用第一个代码,因为我需要能够更改“ed

我有以下代码:

@Html.EditorFor(model => model.NoteRateGreaterThan, null, "advSearchInput", null)
问题是,当post完成时,我为“NoteRateGreaterThan”输入的值没有填充到发送给控制器的模型中。但是,当我将其更改回:

@Html.EditorFor(model => model.NoteRateGreaterThan) 
它起作用了

我需要能够使用第一个代码,因为我需要能够更改“editorfor”输入的宽度,根据我的研究,唯一的方法是通过css(“advSearchInput”是类)
有什么想法吗?

我不确定你认为你的第一个例子是什么,但不是那样。EditorFor无法指定Html属性,例如类。您必须使用更基本的方法,如Html.TextBoxFor

EditorFor的第三个参数是htmlFieldName,它用于在元素ID重复时消除歧义

这就是为什么没有填充字段,因为您正在更改名称

编辑:

从MVC 5.1开始,EditorFor现在允许您通过以下语法传递html属性:

@Html.EditorFor(model => model.Foo, new { htmlAttributes = new { @class = "whatever" }})

在更高版本的MVC EditorFor中,确实能够使用以下语法指定HTML属性,例如类:

@Html.EditorFor(model => model.NoteRateGreaterThan, new { htmlAttributes = new { @class = "form-control" } })
如果您想在CSS中使用元素ID而不是类,那么您可以使用元素
#noterategreatetherthan

您尝试使用的语法将在编辑器上设置自定义元素ID。当有多个控件引用同一模型属性时,这非常有用。如果要设置此控件的样式,可以使用CSS选择器
#advSearchInput

但是,正如您所注意到的,虽然ID已更改的编辑器将从模型中获取值,但只有一个重复控件可以更新回模型中,并且它始终是没有自定义ID的控件。由于没有自定义ID的此模型属性的控件,因此不会将值写入模型中


编辑内容包括关于版本的警告。

我想你是那个对我的答案投了否决票的人,我的答案是2.5年前给出的。当时,您无法传递html属性。对于那个时候不存在的东西,否决旧的答案并不是特别有运动性,你们不觉得吗?我对你的答案投了否决票,因为你忘了提到这只适用于MVC5.1或更高版本,而最初的问题是关于MVC3的,这个语法不适用于MVC3。