2010-04-06 43 views
1

可能重複:
Client Id for Property (ASP.Net MVC)如何檢索Strolngly類型的ASP.NET MVC HTML助手的元素ID?

在我看來,我使用jQuery UI datapicker。 所以我需要的代碼開始像這樣


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

在我看來


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

在老ASP.NET我可以使用


    tb_startDate.ClientID 

是什麼樣的檢索強類型ASP的元素ID。 NET MVC HTML助手? 可以嗎?

+0

看看這個 http://www.dominicpettifer.co.uk/Blog/37/strongly-typed--label--elements-in-asp-net-mvc-2 – sh1ng 2010-04-06 09:34:00

回答

2

一旦呈現文本框,就沒有辦法接收該文本框的ID(因爲它只是輸出純文本)。

但是,您可以使用另一種方法設置類並使用標準的「.class-jquery選擇器」。

像這樣:

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

和:

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

10倍以上。你的建議,但我想(和谷歌搜索)另一種解決方案。你的表現並不是一個好主意。 – sh1ng 2010-04-06 09:30:02

+0

我不確定提議的解決方案在性能方面是否存在任何問題。我希望看到一個鏈接,否則建議:) – Amadiere 2010-04-06 09:32:46

+0

http://www.dominicpettifer.co.uk/Blog/37/strongly-typed--label--elements-in-asp-net-mvc-2 – sh1ng 2010-04-06 09:35:24

1

您可以創建

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