如何使hiddenfor具有真正的价值

MyD*_*ons 3 asp.net-mvc

我的表单必须将布尔值设置为true,但用户将无法与控件交互以更改此值.

我认为最好的方法是使用HiddenFor因为各种原因在Controller中设置它是不可取的,但是我不能将布尔设置为true ...

我的代码

            @using (Html.BeginForm())
            {
                @Html.LabelFor(mod => mod.EmailAddress)<br />
                @Html.TextBoxFor(mod => mod.EmailAddress)

                @Html.HiddenFor(mod => mod.IsSubsribed, new { value = true })
            }
Run Code Online (Sandbox Code Playgroud)

我试过了

      @Html.HiddenFor(mod => mod.IsSubsribed, new { value = true })
      @Html.HiddenFor(mod => mod.IsSubsribed, new { value = "true" })
      @Html.HiddenFor(mod => mod.IsSubsribed, new { value = "checked" })
Run Code Online (Sandbox Code Playgroud)

我需要做什么

Shy*_*yju 7

辅助方法最终将呈现输入元素.那么为什么不写一个隐藏的输入元素标签呢?

<input type="hidden" name="IsSubsribed" value="true" />
Run Code Online (Sandbox Code Playgroud)

或者如果你想使用helper方法,你可以覆盖explcititly值(通常helper方法使用表达式的值(你的属性))

@Html.HiddenFor(d=>d.IsSubsribed,new { Value="true"})
Run Code Online (Sandbox Code Playgroud)

V in Value 应该是这个工作的上限

但请记住,用户仍然可以更新此值并发送它.所以不要依赖来自客户的价值观.如果您知道这应该始终为true,请使用true您的http post action方法(服务器代码),而不是依赖来自客户端浏览器的此值

简而言之,不要盲目信任来自客户端浏览器的数据.它很容易改变