【问题标题】:How can I retrieve element Id for Strolngly typed ASP.NET MVC HTML helper? [duplicate]如何检索 Strolngly 类型的 ASP.NET MVC HTML 帮助器的元素 ID? [复制]
【发布时间】:2010-04-06 09:13:23
【问题描述】:

可能重复:
Client Id for Property (ASP.Net MVC)

在我看来,我正在使用 jquery ui 数据选择器。 所以我需要用这样的代码启动它


$(function() {
        $('#elementID').datepicker({
        });
});
    

在我看来


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

在旧的 ASP.NET 中,我可以使用


    tb_startDate.ClientID
    

如何检索强类型 ASP.NET MVC HTML Helper 的元素 ID? 有可能吗?

【问题讨论】:

标签: jquery asp.net-mvc jquery-ui


【解决方案1】:

一旦文本框被渲染,就无法接收它的 id(因为它只是输出纯文本)。

但是,您可以使用另一种方法来设置类并使用标准的“.class-jquery 选择器”。

像这样:

<%= Html.TextBoxFor(m=>m.StartDate, new { @class = "startDate" }) %>

和:

$('input.startDate').datepicker();

【讨论】:

  • 10x 为您提供建议,但我正在考虑(和谷歌搜索)另一种解决方案。就性能而言,您的想法不是一个好主意。
  • 我不确定建议的解决方案在性能方面是否存在任何问题。我有兴趣查看其他建议的链接:)
  • 当然,按 id 选择更快。但是对于一页上只有 1 到 100 个选择器,我不会费心实现自定义帮助程序来获取 Id,因为它并没有那么快(我们说的是毫秒)。
【解决方案2】:

你可以创建

public static class HtmlExtensions 
{ 
    public static MvcHtmlString FieldIdFor<TModel, TValue>(this HtmlHelper<TModel> html, Expression<Func<TModel, TValue>> expression) 
    { 
        string htmlFieldName = ExpressionHelper.GetExpressionText(expression); 
        string inputFieldId = html.ViewContext.ViewData.TemplateInfo.GetFullHtmlFieldId(htmlFieldName); 
        return MvcHtmlString.Create(inputFieldId); 
    } 
} 

用过就用过

$('@Html.FieldIdFor(m=>m.StartDate').datepicker();

更多详情:http://www.dominicpettifer.co.uk/Blog/37/strongly-typed--label--elements-in-asp-net-mvc-2

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2011-01-24
    • 2011-04-06
    • 2011-03-18
    • 2017-09-28
    • 2014-06-04
    • 1970-01-01
    • 1970-01-01
    • 2016-07-15
    相关资源
    最近更新 更多