ASP.NET MVC RenderPartial обработка идентификаторов на стороне клиента

StackOverflow https://stackoverflow.com/questions/1118233

Вопрос

Я взялся за проект 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>
Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top