У мене частковий перегляд із випадаючим списком. код виглядає так:
<%=Html.DropDownListFor(x => Model.Exercises, new SelectList(Model.Exercises, "Id", "Name", Model.SelectedExercise), new { @id = "exerciseDropdown", @class = "autoComplete" })%>
Справа в тому, що я хочу використати цю часткову частину повторнопереглядати в декількох місцях, але я хочу, щоб інший ідентифікатор призначався елементу управління (замість завжди вправного спадного меню), але зовні я маю лише це:
<% Html.RenderPartial("ExerciseList", Model); %>
Чи є спосіб передати ідентифікатор у часткове представлення? Чи існує стандартний спосіб введення ідентифікаторів у часткове представлення?
Зараз я роблю такі речі:
<% Html.RenderPartial("ExerciseList", Model); %>
<% Html.RenderPartial("ExerciseList2", Model); %>
де ExerciseList та ExerciseList2 ідентичні, але з різними ідентифікаторами, але я впевнений, що є кращий спосіб.
Відповіді:
3 для відповіді № 1Здається, ви використовуєте одну і ту ж модель, щоб робити обидва часткові види. Я бачу два варіанти налаштування.
- Як сказав Нік вище, використовуйте частковий клас і додайте властивість dropDownID до своєї моделі.
** Попередження про код Pseudo 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 для відповіді № 2
Ви можете просто включити ідентифікатор, який ви хочете використовувати в моделі.
0 для відповіді № 3
У моєму випадку я хотів різні ідентифікатори, оскільки календаре jQuery не вдалося записати дату в необхідне поле введення. Натомість він писав дату в перше поле з однаковим ідентифікатором.
Отже, я насправді не займався посвідченням. Тому використовував щось на зразок цього -
@Html.TextBoxFor(model => model.DueDate, new Dictionary<string, Object> { { "class", "datepicker" }, { "id", Guid.NewGuid().ToString() } })