62

によって作成された html 入力の出力名を変更しようとしてい@Html.HiddenForます。

私がこれを使用しているコード:

@Html.HiddenFor(e => e.SomeProperty, new { @id = "some_property", @name = "some_property" }

これidは では機能しますが、名前では機能しません。今はあまり気にしません。変更idする必要がありnameます。これは、ターゲット サーバーにポストされたものだからです。

ある

  • SomePropertyモデルに適用できるプロパティは?
  • プロパティHtml.HiddenForをオーバーライドする方法はありますか?name

それとも、プレーンを手でやるのにこだわってい<input ...>ますか?

4

4 に答える 4

122

の代わりにHtml.Hiddenを使用する(または<input ...>手で書き出す) 必要があります。Html.HiddenFor

@Html.Hidden("some_property", Model.SomeProperty, new { @id = "some_property" })

強く型付けされたヘルパー (たとえば、名前が "For" のように終わるものHiddenFor) の目的は、提供された式から入力名を推測することです。したがって、「カスタム」入力名が必要なHtml.Hidden場合は、名前を明示的に設定できる場所のように、いつでも通常のヘルパーを使用できます。

無効なHTMLを生成するため、unjuken からの回答は間違っています。

そのソリューションを使用すると、次の 2 つの属性が生成されます name

<input  Name="some_property"  name="SomeProperty" id="some_property" type="hidden" value="test" /> 

したがって、入力には1つの属性しか持てないため、INVALID HTML であるName="some_property" AND name="SomeProperty"があります。(ただし、ほとんどのブラウザはたまたま最初のものを使用し、2 番目のものは気にしません...) nameName="some_property"

于 2013-02-11T10:22:53.983 に答える