ASP.NET MVC RenderPartial Обработка идентификаторов на стороне клиента - PullRequest
1 голос
/ 13 июля 2009

Я взял проект MVC, который имеет представление, отображающее несколько частичных представлений, используя

Html.RenderPartial("ClientDetail", model);
Html.RenderPartial("PlanSummary", model);

Проблема, с которой я столкнулся, заключается в том, что внутри этих частичных представлений создаются элементы управления с одинаковым идентификатором. Оба приведенных выше частичных представления имеют следующую строку:

Html.Hidden("Surname", Model.Surname)

Затем создается недопустимый HTML-код, так как на отображаемом выводе появляются два элемента с одинаковым идентификатором.

Есть ли другой способ исправить это, кроме использования "Фамилия1", "Фамилия2" и т. Д.

1 Ответ

1 голос
/ 13 июля 2009

Попробуйте это:

<%= 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>
...