Как вы повторно используете частичное представление с установкой различных идентификаторов - PullRequest
3 голосов
/ 04 апреля 2010

У меня есть частичное представление с раскрывающимся списком. код выглядит так:

 <%=Html.DropDownListFor(x => Model.Exercises, new SelectList(Model.Exercises, "Id", "Name", Model.SelectedExercise), new { @id = "exerciseDropdown", @class = "autoComplete" })%>

Проблема заключается в том, что я хочу повторно использовать это частичное представление в нескольких местах, но я хочу, чтобы элемент управления был назначен другому идентификатору (а не exercDropdown всегда), но снаружи у меня есть только это:

 <% Html.RenderPartial("ExerciseList", Model); %>

Есть ли способ передать идентификатор в частичное представление? Существует ли стандартный способ ввода идентификаторов в частичное представление?

Прямо сейчас я делаю такие вещи:

 <% Html.RenderPartial("ExerciseList", Model); %>
 <% Html.RenderPartial("ExerciseList2", Model); %>

где ExerciseList и ExerciseList2 идентичны, но с разными идентификаторами, но я уверен, что есть лучший способ.

Ответы [ 3 ]

3 голосов
/ 05 апреля 2010

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

  1. Как сказал Ник выше, используйте частичный класс и добавьте свойство dropDownID к вашей модели.

** Предупреждение Псевдо VB код впереди

Partial Public Class Exercise
Dim _ddID as string

Public Property DropDownID as string
    Get
        Return _ddID
    End Get
    Set(byval value as string)
        _ddID = value
    End Set
End Property

Тогда в вашем контроллере:

Function Index() as ActionResult
    Exercise = getExercise() 'call to get your exercise model'
    Exercise.DropDownID = "DropDownID1"
    Return View(Exercise)
End Function

Вид:

 <%=Html.DropDownListFor(x => Model.Exercises, new SelectList(Model.Exercises, "Id", "Name", Model.SelectedExercise), new { @id = model.DropDownID, @class = "autoComplete" })%> 

Вариант 2. Установите в своем словаре ViewData

Контроллер:

Function Index() as ActionResult
    Exercise = getExercise() 'call to get your exercise model'
    ViewData("ExerciseID") = "DropDownID1"
    Return View(Exercise)
End Function

Вызов частичного просмотра:

<% Html.RenderPartial("ExerciseList", Model, ViewData); %> 

Вид:

 <%=Html.DropDownListFor(x => Model.Exercises, new SelectList(Model.Exercises, "Id", "Name", Model.SelectedExercise), new { @id = ViewData("ExerciseID"), @class = "autoComplete" })%> 
0 голосов
/ 23 апреля 2014

В моем случае я хотел разные идентификаторы, потому что в календаре jQuery не удалось записать дату в необходимое поле ввода. Вместо этого он записывал дату в первое поле с тем же идентификатором.

Итак, меня не особо интересовало удостоверение личности. Так использовал что-то вроде этого -

@Html.TextBoxFor(model => model.DueDate, new Dictionary<string, Object> { { "class", "datepicker" }, { "id", Guid.NewGuid().ToString() } })
0 голосов
/ 04 апреля 2010

Вы можете просто включить идентификатор, который хотите использовать в модели.

...