IT TIP

숨겨진 입력이 true / false 대신 value =“value”를 쓰는 이유는 무엇입니까?

itqueen 2020. 12. 25. 10:41
반응형

숨겨진 입력이 true / false 대신 value =“value”를 쓰는 이유는 무엇입니까?


숨겨진 양식의 일부로 MVC4 사이트가 있습니다.

<input name="somefield" type="hidden" value="@ViewBag.Test"/>

의 값은 ViewBag.Test입니다 true. 양식 필드는 다음 양식의 입력 매개 변수에 게시됩니다.

public ActionResult SomeAction(bool somefield = false, ...)

그러나 somefield항상 false입니다. 조사 결과 소스 코드에 다음이 포함되어 있음을 알 수 있습니다.

<input name="somefield" type="hidden" value="value"/>

그러나 나는 이것이 작동 했던 것을 알고 있습니다. 무슨 일이 있었으며 어떻게해야합니까?


이 동작은 MVC3와 MVC4 사이에서 변경되었습니다. MVC3에서 다음이있는 경우 :

<input name="somefield" type="hidden" someprop="@(SomeBooleanExpression)"/>

그것은 매우 문자 그대로 쓸 것입니다.

<input name="somefield" type="hidden" someprop="True"/>

그러나 MVC4에서는 "체크 박스"등의 규칙을 따르므로 값이 다음과 같으면 다음 true을 얻습니다.

<input name="somefield" type="hidden" someprop="someprop"/>

그리고 그것이 false완전히 생략 된 경우 :

<input name="somefield" type="hidden"/>

이 문제를 해결하려면 다음을 고려하십시오 .ToString().

<input name="somefield" type="hidden"
   someprop="@(SomeBooleanExpression.ToString())"/>

그런 다음 부울 규칙이 아닌 문자열 규칙을 따릅니다.

참조 URL : https://stackoverflow.com/questions/13455270/why-is-my-hidden-input-writing-value-value-instead-of-true-false

반응형