任何人都可以提供一个简单的示例来扩展 Html.TextBoxFor 助手

发布于 2024-09-17 17:49:36 字数 682 浏览 5 评论 0原文

我希望有人可以提供一个扩展 Html.TextBoxFor 帮助器的简单、直接的示例。我想包含一个布尔 ReadOnly 参数,如果为真,它将(惊喜,惊喜,惊喜)呈现控件只读。我见过一些例子,但并没有完全达到目的,但是我尝试了以下方法,HtmlHelper 参数看到的 TextBoxFor 的唯一签名是我正在创建的签名(我是否缺少 using 语句?) :

public static MvcHtmlString TextBoxFor<TModel, TProperty>(this HtmlHelper<TModel> htmlHelper, Expression<Func<TModel, TProperty>> expression, object htmlAttributes, bool disabled)
    {
        var values = new RouteValueDictionary(htmlAttributes);

        if (disabled)
            values.Add("disabled", "true");

        return htmlHelper.TextBoxFor(expression, values)); //<-- error here
    }

我希望一个简单的例子能够帮助我走上正确的道路。

谢谢。

I'm hoping that someone can provide a simple, straight forward example of extending the Html.TextBoxFor helper. I would like to include a boolean ReadOnly parameter which will (surprise, surprise, surprise) render the control read only if true. I've seen a few examples which didn't quite do the trick and I've tried the following however, the only signature for TextBoxFor that the HtmlHelper parameter sees is the one I'm creating (am I missing a using statement?):

public static MvcHtmlString TextBoxFor<TModel, TProperty>(this HtmlHelper<TModel> htmlHelper, Expression<Func<TModel, TProperty>> expression, object htmlAttributes, bool disabled)
    {
        var values = new RouteValueDictionary(htmlAttributes);

        if (disabled)
            values.Add("disabled", "true");

        return htmlHelper.TextBoxFor(expression, values)); //<-- error here
    }

I'm hoping that a simple example will help get me on the right track.

Thanks.

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(2

感情废物 2024-09-24 17:49:36

确保您在扩展类中使用 System.Web.Mvc.Html; 来调用 HtmlHelper.TextBoxFor

public static MvcHtmlString TextBoxFor<TModel, TProperty>(this HtmlHelper<TModel> htmlHelper, 
    Expression<Func<TModel, TProperty>> expression, 
    object htmlAttributes, 
    bool disabled)
    {
        var values = new RouteValueDictionary(htmlAttributes);
        // might want to just set this rather than Add() since "disabled" might be there already
        if (disabled) values["disabled"] = "true";
        return htmlHelper.TextBoxFor<TModel, TProperty>(expression, htmlAttributes);
    }

make sure you're using System.Web.Mvc.Html; in your extension class to call HtmlHelper.TextBoxFor<>.

public static MvcHtmlString TextBoxFor<TModel, TProperty>(this HtmlHelper<TModel> htmlHelper, 
    Expression<Func<TModel, TProperty>> expression, 
    object htmlAttributes, 
    bool disabled)
    {
        var values = new RouteValueDictionary(htmlAttributes);
        // might want to just set this rather than Add() since "disabled" might be there already
        if (disabled) values["disabled"] = "true";
        return htmlHelper.TextBoxFor<TModel, TProperty>(expression, htmlAttributes);
    }
煞人兵器 2024-09-24 17:49:36

这一行有一个左括号和两个右括号。应该是:

return htmlHelper.TextBoxFor(expression, values);

同时让你的 HTML 对标准更加友好:

values["disabled"] = "disabled";

You have one opening and two closing parenthesis on this line. Should be:

return htmlHelper.TextBoxFor(expression, values);

Also to make your HTML a little more standards friendly:

values["disabled"] = "disabled";
~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文