У меня только что была эта проблема, и я использовал ответ Джона, который хорош, и он работает. Недостатком является то, что ваш класс определен в коде, а не в разметке.
Итак, я взял ответ и сделал прогаматический способ получить все атрибуты для элемента управления, скопировать их в InputAttributes и удалить эти скопированные атрибуты из атрибутов.
Обратите внимание, что хотя это происходит от RadioButton, вы можете использовать этот метод для расширения любого элемента управления, такого как метки или флажки.
using System.Web.UI;
using System.Web.UI.WebControls;
namespace Hidistro.UI.Common.Controls
{
/// <summary>
/// Just like a normal RadioButton, except that the wrapped span is disabled.
/// </summary>
public class CleanRadioButton : RadioButton
{
protected override void Render(HtmlTextWriter writer)
{
List<string> keysToRemove = new List<string>();
foreach (object key in Attributes.Keys)
{
string keyString = (string)key;
InputAttributes.Add(keyString, Attributes[keyString]);
keysToRemove.Add(keyString);
}
foreach (string key in keysToRemove)
Attributes.Remove(key);
base.Render(writer);
}
}
}
Таким образом, все, что вам нужно сделать, это следующее, и он будет выводить теги без интервала.
<namespace:CleanRadioButton class="class1" />
<namespace:CleanRadioButton class="class2" />
Вывод HTML:
(обратите внимание, что «сгенерированный» генерируется автоматически)
<input id="generated" type="radio" name="generated" value="generated" class="class1">
<input id="generated" type="radio" name="generated" value="generated" class="class2">