Как указать хелпер html со строгой типизацией, который использует вложенный класс модели вместо самой модели? - PullRequest
0 голосов
/ 07 сентября 2010

Я создаю строго типизированную форму поиска в ASP.NET MVC 2, которая публикует на странице результатов форму FormMethod.Get (т. Е. Входные данные формы и их значения публикуются в строке запроса результатов поиска).Как указать строго типизированные помощники по html, которые используют вложенный класс модели вместо самой модели, чтобы я не получил точечную запись для входных имен в строке запроса?

Мои строго-Класс модели типизированного представления выглядит следующим образом:

public class SearchViewModel
{
    public SearchQuery SearchQuery { get; set; }

    public IEnumerable<SelectListItem> StateOptions { get; set; }
    ...
}

Класс SearchQuery выглядит следующим образом:

public class SearchQuery
{
    public string Name { get; set; }
    public string State { get; set; }
    ...
}

Делая это:

<%= Html.TextBoxFor(m => m.SearchQuery.Name)%>

сгенерирует вход с именем SearchQuery.Name, который поместит &SearchQuery.Name=blah в строку запроса при публикации формы.Вместо этого я бы предпочел просто &Name=blah, поскольку только свойства SearchQuery будут иметь связанные элементы формы.

Я предполагаю, что мне нужно что-то сделать с выражением Html.TextBoxFor Linq, но я не могуПравильный синтаксис ..

Спасибо за помощь !!

1 Ответ

0 голосов
/ 07 сентября 2010

Одним из способов решения этой проблемы является присвоение Name свойства ViewModel, а именно:

public string Name{ get{ return this.SearchQuery.Name; } }

И в представлении:

<%= Html.TextBoxFor(m => m.Name)%>

Является ли это хорошей идеей, это другой вопрос.

...