ASP.NET MVC RenderPartial обработка идентификаторов на стороне клиента
-
12-09-2019 - |
Вопрос
Я взялся за проект MVC, в котором есть представление, отображающее несколько частичных представлений, используя
Html.RenderPartial("ClientDetail", model);
Html.RenderPartial("PlanSummary", model);
У меня проблема в том, что внутри этих частичных представлений генерируются элементы управления с одним и тем же идентификатором.Оба приведенных выше частичных представления имеют следующую строку:
Html.Hidden("Surname", Model.Surname)
Затем это создает недопустимый HTML-код, поскольку в отображаемом выводе появляются два элемента с одним и тем же идентификатором.
Есть ли другой способ это исправить, кроме использования «Фамилия1», «Фамилия2» и т.д.
Решение
Попробуй это:
<%= Html.RenderPartial("ClientDetail", model, new ViewDataDictionary {{"PartialId", 1}}) %>
<%= Html.RenderPartial("PlanSummary", model, new ViewDataDictionary {{"PartialId", 2}}) %>
В частичных представлениях:
Html.Hidden("Surname" + HtmlEncode(ViewData["PartialId"]), Model.Surname)
<!-- or -->
Html.Hidden("Surname" + PartialId, Model.Surname)
<script runat="server">
protected string PartialId {
get {
return HtmlEncode(ViewData["PartialId"]);
}
}
</script>
Не связан с StackOverflow