Привязка модели через шаблоны вызывает разные имена для HTML-тегов. Как ссылаться на это в JQuery? - PullRequest
0 голосов
/ 22 декабря 2011

Допустим, у меня есть класс модели,

public class NameModel
{
    public string Title     { get; set; }
    public string FirstName { get; set; }
    public string LastName  { get; set; }
    public List<SelectListItem> Titles 
    {
        get
        {
            var list = new List<SelectListItem>();
            list.Add(new SelectListItem() { Text = "Mr.", Value = "Mr." });
            list.Add(new SelectListItem() { Text = "Mrs.", Value = "Mrs." });
            list.Add(new SelectListItem() { Text = "Ms.", Value = "Ms." });

            return list;
        }
    }

    public NameModel()
    {

    }

    public NameModel(string first, string last) 
    {
        this.FirstName = first;
        this.LastName = last;
    }
}  

Этот класс используется в представлении с именем ShowName.cshtml следующим образом

@model MyTestApp.Models.NameModel

@Html.DropDownListFor(m => m.Title, Model.Titles, Model.Titles)
<br />
@Html.LabelFor( m => m.LastName) 
@Html.TextBoxFor( m => m.LastName)       
<br />
@Html.LabelFor( m => m.FirstName) 
@Html.TextBoxFor( m => m.FirstName) 

Я использую этот класс в качестве шаблона (имеется в виду через EditFor), поэтому в одном случае, когда этот класс используется для Employee, в HTML текстовое поле для LastName будет иметь идентификатор Employee_LastName, тогда как если я использовал его для Manager, HTML-идентификатором для этого текстового поля будет Manager_LastName.Проблема в том, что если у меня есть определенный java-скрипт / JQuery, который использует эти идентификаторы, как я могу ссылаться на эти текстовые поля, потому что их идентификаторы менялись в зависимости от того, где они используются?

Ответы [ 3 ]

1 голос
/ 22 декабря 2011

Используйте селекторы класса вместо селекторов идентификатора.Поэтому вместо:

$('#Manager_LastName')...

присвойте соответствующему входу класс и затем:

$('.LastName')...
1 голос
/ 22 декабря 2011

Попробуйте создать текстовое поле, как показано ниже

@Html.TextBoxFor(m => m.LastName,new {id="LastName"})

Или вы можете добавить класс CSS и ссылаться на свои элементы управления с помощью селектора классов

0 голосов
/ 22 декабря 2011

вы можете попробовать получить оба:

$ ('# Manager_LastName, #Employee_LastName') ...

или использовать синтаксис 'заканчивается с':

$ ( '[ID $ = _ LastName]) ...

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...