【问题标题】:MVC2 Html.RadioButton - Is there a way to set the InnerHTML using HTML Helpers?MVC2 Html.RadioButton - 有没有办法使用 HTML Helpers 设置 InnerHTML?
【发布时间】:2011-05-26 20:25:35
【问题描述】:

HTML 中完全正常的单选按钮如下所示:

<input type="radio" name="somename" value="1">First</input>
<input type="radio" name="somename" value="2">Second</input>
<input type="radio" name="somename" value="3">Third</input>

据我所知,没有办法在 HTML 帮助程序中设置“InnerHTML”(使用 JavaScript 术语);类似:

<%: Html.RadioButtonFor(m => m.somename, 1, "First") %>

我看到的所有示例都为每个按钮创建了一个单独的标签,这可以工作,但确实搞砸了 HTML。可以这样做吗?如果不能,为什么?

【问题讨论】:

  • 标签在所有输入控件的可访问性方面非常有帮助,甚至是单选按钮。
  • @Xhalent:我意识到这是我个人的看法,但 text 似乎更有用,尤其是在使用 javascript 访问 innerhtml 时。输入具有文本元素是有原因的。
  • @Xhalent:好吧,我是个混蛋——我做了一些进一步的检查,在 HTML 中 元素没有结束标记。我现在就闭嘴,用标签做事。 :-)

标签: asp.net-mvc-2 radio-button html-helper


【解决方案1】:

您可以制作自己的 html 助手:

public static MvcHtmlString RadioButtonFor<TModel, TProperty>( this HtmlHelper<TModel> html, Expression<Func<TModel, TProperty>> expression, object value, string innerHtml )
{
    var memberExpression = (MemberExpression)expression.Body;
    var name = memberExpression.Member.Name;
    var radioButton = string.Format( "<input type='radio' name='{0}' value='{1}'>{2}</input>", name, value, innerHtml );
    return MvcHtmlString.Create( radioButton );
}

【讨论】:

  • 我完全错了——在 HTML 中 元素没有结束标记。感谢您的 HtmlHelper 实现。
【解决方案2】:

在 HTML 中, 元素没有结束标记。格式正确的输入元素没有子元素。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2017-12-09
    • 1970-01-01
    • 2011-10-19
    • 2020-11-25
    • 1970-01-01
    • 2021-12-27
    • 1970-01-01
    • 2023-01-13
    相关资源
    最近更新 更多