This repository has been archived by the owner on Dec 14, 2018. It is now read-only.
Some string-based HTML helpers can't get Model
values if called from templates
#1485
Comments
Is this a change from MVC 5? Can you include an example and what the expected behavior should be? |
MVC 5.2 has the same issue. This likely indicates templates aren't often used with string-based helpers. Ex. Index.cshtml contains: @Html.DisplayFor(model => model.Dependent, templateName: "Dependent") DisplayTemplates/Dependent.cshtml contains: <td>
@Html.Label(expression: "Name", labelText: null, htmlAttributes: new { @class = "control-label", })
</td>
<td>
'@Html.Value(name: "Name")'
</td>
<td>
@Html.TextBox(name: "Name", value: null, htmlAttributes: new { disabled = "disabled", @readonly = "readonly", })
</td> More details: Fix is to change lines 810 and 834 of |
... and the textbox should also contain "Dependents name" in the generated page. |
This was referenced Jun 7, 2015
dougbu
added a commit
that referenced
this issue
Jun 8, 2015
- test additional cases _close_ to these bugs as well for #1485 - show odd `@Html.CheckBox()`, `@Html.Hidden()` behaviour in unit tests - show odd `@Html.TextBox()` behaviour in functional tests (templates) for #1487 - show odd `@Html.Value()` behaviour in unit tests - show odd `@Html.RadioButton()`, `@Html.TextArea()` behaviour in functional tests - show lack of validation attributes for `@Html.RadioButton()`, `<select>` tag helper for #2662 - show odd `@Html.RadioButton(string.Empty)` behaviour in functional tests for #2664 - show failures with `@Html.ListBox()` in unit tests nits: - test `IHtmlHelper` methods, not extensions - use `ViewData`, not `ViewBag` in `HtmlGeneration_FormController` - name test methods a bit more consistently - rename `HtmlHelperValueExtensionsTest` to `HtmlHelperValueTest`
dougbu
added a commit
that referenced
this issue
Jun 9, 2015
- test additional cases _close_ to these bugs as well for #1485 - show odd `@Html.CheckBox()`, `@Html.Hidden()` behaviour in unit tests - show odd `@Html.TextBox()` behaviour in functional tests (templates) for #1487 - show odd `@Html.Value()` behaviour in unit tests - show odd `@Html.RadioButton()`, `@Html.TextArea()` behaviour in functional tests - show lack of validation attributes for `@Html.RadioButton()`, `<select>` tag helper for #2662 - show odd `@Html.RadioButton(string.Empty)` behaviour in functional tests for #2664 - show failures with `@Html.ListBox()` in unit tests nits: - test `IHtmlHelper` methods, not extensions - use `ViewData`, not `ViewBag` in `HtmlGeneration_FormController` - name test methods a bit more consistently - rename `HtmlHelperValueExtensionsTest` to `HtmlHelperValueTest`
dougbu
added a commit
that referenced
this issue
Jun 9, 2015
- test additional cases _close_ to these bugs as well for #1485 - show odd `@Html.CheckBox()`, `@Html.Hidden()` behaviour in unit tests - show odd `@Html.TextBox()` behaviour in functional tests (templates) for #1487 - show odd `@Html.Value()` behaviour in unit tests - show odd `@Html.RadioButton()`, `@Html.TextArea()` behaviour in functional tests - show lack of validation attributes for `@Html.RadioButton()`, `<select>` tag helper for #2662 - show odd `@Html.RadioButton(string.Empty)` behaviour in functional tests for #2664 - show failures with `@Html.ListBox()` in unit tests nits: - test `IHtmlHelper` methods, not extensions - use `ViewData`, not `ViewBag` in `HtmlGeneration_FormController` - name test methods a bit more consistently - rename `HtmlHelperValueExtensionsTest` to `HtmlHelperValueTest`
dougbu
added a commit
that referenced
this issue
Jun 9, 2015
- test additional cases _close_ to these bugs as well for #1485 - show odd `@Html.CheckBox()`, `@Html.Hidden()` behaviour in unit tests - show odd `@Html.TextBox()` behaviour in functional tests (templates) for #1487 - show odd `@Html.Value()` behaviour in unit tests - show odd `@Html.RadioButton()`, `@Html.TextArea()` behaviour in functional tests - show lack of validation attributes for `@Html.RadioButton()`, `<select>` tag helper for #2662 - show odd `@Html.RadioButton(string.Empty)` behaviour in functional tests for #2664 - show failures with `@Html.ListBox()` in unit tests nits: - test `IHtmlHelper` methods, not extensions - use `ViewData`, not `ViewBag` in `HtmlGeneration_FormController` - name test methods a bit more consistently - rename `HtmlHelperValueExtensionsTest` to `HtmlHelperValueTest`
dougbu
added a commit
that referenced
this issue
Jun 10, 2015
- test additional cases _close_ to these bugs as well for #1485 - show odd `@Html.CheckBox()`, `@Html.Hidden()` behaviour in unit tests - show odd `@Html.TextBox()` behaviour in functional tests (templates) for #1487 - show odd `@Html.Value()` behaviour in unit tests - show odd `@Html.RadioButton()`, `@Html.TextArea()` behaviour in functional tests - show lack of validation attributes for `@Html.RadioButton()`, `<select>` tag helper for #2662 - show odd `@Html.RadioButton(string.Empty)` behaviour in functional tests for #2664 - show failures with `@Html.ListBox()` in unit tests nits: - test `IHtmlHelper` methods, not extensions - use `ViewData`, not `ViewBag` in `HtmlGeneration_FormController` - name test methods a bit more consistently - rename `HtmlHelperValueExtensionsTest` to `HtmlHelperValueTest`
dougbu
added a commit
that referenced
this issue
Jun 10, 2015
- #1485, #1487 - handle `TemplateInfo.HtmlFieldPrefix` in `ViewDataEvaluator.Eval()` - attempt lookup in the `ViewDataDictionary` using full name then evaluate relative `expression` against `viewData.Model` - handle `null` or empty `expression` special case in this method (remove `throw`s) - always pass relative `expression` name into `Eval()` - remove `null` or empty `expression` handling from higher-level code - in a couple of cases, special-case returned `ViewDataInfo` - #2662 - remove incorrect guard from `DefaultHtmlGenerator.GenerateRadioButtion()` - add doc comments for the core methods that have changed - enable unit tests skipped due to one of above bugs - fix one (yeah, just one) other test with incorrect expectations - remove functional test comments about the above bugs and update expectations nits: - move some comments describing `ViewDataEvaluator` methods above the methods
dougbu
added a commit
that referenced
this issue
Jun 17, 2015
- #1485, #1487 - handle `TemplateInfo.HtmlFieldPrefix` in `ViewDataEvaluator.Eval()` - attempt lookup in the `ViewDataDictionary` using full name then evaluate relative `expression` against `viewData.Model` - handle `null` or empty `expression` special case in this method (remove `throw`s) - always pass relative `expression` name into `Eval()` - remove `null` or empty `expression` handling from higher-level code - in a couple of cases, special-case returned `ViewDataInfo` - #2662 - remove incorrect guard from `DefaultHtmlGenerator.GenerateRadioButtion()` - add doc comments for the core methods that have changed - enable unit tests skipped due to one of above bugs - fix one (yeah, just one) other test with incorrect expectations - remove functional test comments about the above bugs and update expectations nits: - move some comments describing `ViewDataEvaluator` methods above the methods
Sign up for free
to subscribe to this conversation on GitHub.
Already have an account?
Sign in.
@Html.Checkbox()
,@Html.Hidden()
, and@Html.TextBox()
do not behave as expected in template views. They resolve values using the full expression names (which won't find properties of the inner model), unlike all other HTML helpers. This leads to unexpectedly empty values in the generated HTML.The text was updated successfully, but these errors were encountered: