ASP.NET MVC 5 renders different bool value for hidden input
I think I've figured it out.
I believe the Razor viewengine is adhering to the HTML 5 way of setting boolean attributes, as described here:
What does it mean in HTML 5 when an attribute is a boolean attribute?
In HTML 5, a bool attribute is set like this:
<input readonly />
or
<input readonly="readonly" />
So the Razor viewengine takes your model's bool value and will render (in my case) the value
attribute if Model.IsBoolValue
is true
. Otherwise, if it's false
then the value
attribute is not rendered at all.
EDIT:
As mentioned Zabavsky in the comments, to force the value of True or False to appear in the value
attrbiute, simple use ToString()
:
<input type="hidden" value="@Model.BoolProperty.ToString()" />
Jason Evans
Software developer currently working for Confused.com in Wales, UK. My core skills are .NET C# ASP.NET MVC JavaScript Reputation tracker My Notes http://blogs.microsoft.co.il/blogs/sasha/archive/2009/07/31/garbage-collection-thread-suspension-delay-250ms-multiples.aspx
Updated on June 13, 2022Comments
-
Jason Evans almost 2 years
Given the following viewmodel:
public class FooViewModel { public bool IsBoolValue { get; set; } }
and this view:
<input type="hidden" id="Whatever" data-something="@Model.IsBoolValue" value="@Model.IsBoolValue" />
The output of the hidden input field is this:
<input type="hidden" id="Whatever" data-something="True" value="value">
How come the
value
attribute is not set toTrue
, but thedata-something
attribute is?Is there a change in MVC 5 that would cause this, since in my MVC 4 apps this problem does not occur.