Есть ли функция MVC, которая преобразует "item [0]" в "item_0_" - PullRequest
1 голос
/ 24 марта 2011

Я использую MVC3 с Razor и заметил, что вспомогательные функции HTML генерируют теги html, которые имеют атрибуты имен, как я их просил, но имеют определенный формат для атрибута id. Если я попытаюсь сгенерировать флажок и передать «item [0]» в качестве параметра имени, я получу флажок с «item [0]» в качестве имени и «item_0_» для id.

Я предполагаю, что для этого есть веская причина, и я предполагаю, что есть функция, которая выполняет преобразование этой строки в строку? Вы знаете, какая функция это делает? Мне нужно сделать этот тип преобразования в моем коде.

Ответы [ 4 ]

2 голосов
/ 24 марта 2011
0 голосов
/ 24 марта 2011

Это может быть в классе Control в asp.net - посмотрите там, а не MVC

0 голосов
/ 24 марта 2011

Взято со страницы MSDN для Свойство Control.ID :

Примечание
Допустимыми значениями являются только комбинации буквенно-цифровых символов и символа подчеркивания (_).имущество.Включение пробелов или других недопустимых символов приведет к ошибке синтаксического анализатора страниц ASP.NET.

Так что, похоже, вы должны быть в порядке, используя что-то вроде:

string id = ...;
id = Regex.Replace(id, @"\W", "_");

Но да, это будетнеплохо бы найти системный метод.

0 голосов
/ 24 марта 2011

Это, вероятно, происходит из-за того, что [ недопустимо в html-идентификаторе.Такой функционал было бы очень легко написать самому:

public string SanitizeID(string dirtyID)
{
     return dirtyID
         .Replace("[", "_")
         .Replace("]", "_")
         .Replace(".", "_");

     // add any other replace as needed
}

РЕДАКТИРОВАТЬ
Этот ответ может указывать вам правильное направление: Предотвращение ASP.NET MVC отЗамена периода подчеркиванием в идентификаторах помощников HTML

РЕДАКТИРОВАТЬ 2
Этот пост Скотта Хансельмана , по-видимому, намекает на то, что такое поведение определено в DefaultModelBinderкласс .csСейчас я не могу проверить исходники ASP.NET MVC, но вы можете посмотреть там ...

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