IT

숨겨진 입력이 true/false가 아닌 value="value"인 이유는 무엇입니까?

itgroup 2023. 6. 12. 21:19
반응형

숨겨진 입력이 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())"/>

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

초기화된 부울 값 boolean 무언가 = false;

그런 다음 이 값을 다음과 같은 문자열로 변환합니다.

<입력 이름="somefield" type="숨겨진" 값="@something.문자열로()>

                   OR

초기화된 문자열 something ="false"; < 입력 이름="somefield" type="숨겨진" 값="@something" >

그러면 우리는 읽을 수 있습니다.

    public ActionResult Somemethod(bool something) => you can get Boolean value here 
    {
    }

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

반응형