/ / Як повторно використовувати частковий вигляд із встановленням різних ідентифікаторів - asp.net-mvc, селектор, asp.net-mvc-partview

Як повторно використовувати частковий перегляд із налаштуванням різних ідентифікаторів - asp.net-mvc, селектор, asp.net-mvc-частковий

У мене частковий перегляд із випадаючим списком. код виглядає так:

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

Здається, ви використовуєте одну і ту ж модель, щоб робити обидва часткові види. Я бачу два варіанти налаштування.

  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() } })