Asp.net mvc 编辑从@Html.EditorFor生成的属性

Asp.net mvc 编辑从@Html.EditorFor生成的属性,asp.net-mvc,asp.net-mvc-3,razor,Asp.net Mvc,Asp.net Mvc 3,Razor,我想知道是否可以编辑@Html.EditorFor(model=>item.Title)生成的属性值 @Html.EditorFor(model=>item.Title)将生成以下内容: <input class="text-box single-line" id="item_Title" name="item.Title" type="text" value="Avatar" /> 我想知道是否可以编辑id属性 谢谢 我认为您无法编辑id,因为EditorFor的要点是它“绑

我想知道是否可以编辑@Html.EditorFor(model=>item.Title)生成的属性值

@Html.EditorFor(model=>item.Title)将生成以下内容:

<input class="text-box single-line" id="item_Title" name="item.Title" type="text" value="Avatar" />

我想知道是否可以编辑id属性


谢谢

我认为您无法编辑id,因为EditorFor的要点是它“绑定”到您要应用它的模型属性。如果您需要不同的id,您可以尝试使用
Html.TextBox

创建自己的文本框,我认为您无法编辑id,因为EditorFor的要点是它“绑定”到您应用它的模型属性。如果您需要不同的id,您可以尝试使用
Html.TextBox
创建自己的编辑器模板来自定义呈现所需内容。 见: 然后,您可以控制编辑器html的发出方式。不过,您可能需要执行一些lambda解析魔术来获得模型变量名。我还需要做更多的研究——只是想在这里给出一个指针,以防没有其他人回答

不过,在这种情况下,您“可能”必须编写自己的扩展方法,该方法接受lambda并基于该lambda创建名称。您可以在这里看到lambda是如何解析的,例如:


这一切可能都不太有帮助。。但至少要提供一些其他的东西:)

创建您自己的编辑器模板,以自定义呈现您想要的任何内容。 见: 然后,您可以控制编辑器html的发出方式。不过,您可能需要执行一些lambda解析魔术来获得模型变量名。我还需要做更多的研究——只是想在这里给出一个指针,以防没有其他人回答

不过,在这种情况下,您“可能”必须编写自己的扩展方法,该方法接受lambda并基于该lambda创建名称。您可以在这里看到lambda是如何解析的,例如:


这一切可能都不太有帮助。。但至少要提供一些其他信息:)

我认为绑定到属性的是名称,而不是id(其中一个原因是在使用Html.TextBoxFor之类的内容时无法轻松更改名称,但可以更改id)。它绑定到这两个属性。这就是为什么它能够更新您的模型,因为它需要一个特定的id。为什么您需要更改文本框的id?也许有一种方法可以在不修改的情况下完成你想做的事情。如果是这样的话,我突然感到非常困惑,为什么我能够更改助手方法的id(虽然…不是“EditorFor”)并使绑定仍然有效。我认为绑定到属性的是名称,而不是id。(其中一个原因是,在使用诸如Html.TextBoxFor之类的内容时,您无法轻松更改名称,但您可以更改id。)两者都有关系。这就是为什么它能够更新你的模型,因为它需要一个特定的id。为什么你需要更改文本框的id?也许有一种方法可以在不修改它的情况下完成你想做的事情?嗯。如果是这样的话,我突然非常困惑为什么我能够更改我的助手方法的id(虽然…不是“EditorFor”)并且绑定仍然有效。