如果选项列表处于局部视图中,是否可以设置所选选项?

时间:2018-09-27 18:32:30

标签: asp.net-core-mvc

我正在使用ASP.NET MVC Core 2.1,并且我有一组硬编码的HTML选项,我希望通过将它们置于局部视图中来重复使用。页面将根据需要呈现,但未设置所选选项。

这有效:

<select asp-for="Person.Prefix" class="form-control">
    <option value="Miss">Miss</option>
    <option value="Mr.">Mr.</option>
    <option value="Mrs.">Mrs.</option>
    <option value="Ms.">Ms.</option>
</select>

这不是:

<select asp-for="Person.Prefix" class="form-control">
    <partial name="People/_PrefixOptions" />
</select>

_PrefixOptions的内容是

<option value="Miss">Miss</option>
<option value="Mr.">Mr.</option>
<option value="Mrs.">Mrs.</option>
<option value="Ms.">Ms.</option>

我无法将整个select元素拉入partial,因为它绑定到其他页面上的不同属性。

1 个答案:

答案 0 :(得分:2)

使用<partial>标记帮助器时,您可以通过两种方式传递数据:

  • 使用model属性提供模型实例。

示例,当您希望将Model.Person模型传递给以下用户时:

<select asp-for="Person.Prefix" class="form-control">
    <partial name="People/_PrefixOptions" model="Model.Person" />
</select>
  • 通过for属性,您可以在局部视图内传递当前模型的属性。

例如,当您希望将模型属性Prefix的{​​{1}}传递给:

Person

请注意,使用<select asp-for="Person.Prefix" class="form-control"> <partial name="People/_PrefixOptions" for="Person.Prefix" /> </select> 属性时缺少Model.

有关for标记帮助器的更多信息可以是found here

替代

使用此功能标记选定的<partial>元素时,它仍会使您在分部中进行一些工作。就我个人而言,我更喜欢在<option>容器中对选项进行硬编码,并对选择列表described here使用SelectListItem方法。