2011-03-23 5 views
0

EditorTamplates에서 JQuery를 사용하여 캘린더를 만들고 싶습니다. 하지만 Html.TextBoxFor에서 오는 입력 텍스트의 ID를 얻는 데 어려움을 겪고 있습니다. 보기에 둘 이상의 달력이 있기를 원하기 때문에 그 값을 직접 할당 할 수없고 내 제어의 컨텍스트를 따라야합니다.EditorTemplates의 Html.TextBoxFor에서 ClientId 검색

뷰 :

<%@ Control 
    Language="C#" 
    Inherits="MvcContrib.FluentHtml.ModelViewUserControl<DateTimeModel>" %> 

<%= Html.LabelFor(x=>x.Date) %> 
<%= Html.TextBoxFor(x=>x.Date, new { @class="common-textbox-ui-calendar-tb"})%> 

<script> 
    var CalendarTBId = '<%= this.IdFor(x=>x.Date) %>'; 
</script> 

그리고 모델 :

public class DateTimeModel 
{ 
    public DateTime Date { get; set; } 
    public bool IsEnabled { get; set; } 
} 

지금까지 내가 MvContrib와 시도,하지만 난이 "Filter_StartDate_Date"을 얻을 것으로 예상했을 때, 나는 단지받을 "날짜 ".

해결할 수있는 아이디어가 있습니까? 사전에

덕분에,

[편집]

나는 내보기에 다음을 추가 한 :

<% Guid ControlGuid = Guid.NewGuid(); %> 
<%= this.TextBox(x=> x.Date.ToShortDateString()).Id(ControlGuid.ToString()) %> 
<script> 
    var CalendarTBId = '<%= ControlGuid %>'; 
</script> 

하지만 아주 싫어. 나에게보기에 해킹처럼 보인다. 어떻게 생각해?

[/ 편집]

답변

3

이 질문을 참조하십시오 :

public static partial class HtmlExtensions 
{ 
    public static MvcHtmlString ClientIdFor<TModel, TProperty>(this HtmlHelper<TModel> htmlHelper, Expression<Func<TModel, TProperty>> expression) 
    { 
     return MvcHtmlString.Create(htmlHelper.ViewContext.ViewData.TemplateInfo.GetFullHtmlFieldId(ExpressionHelper.GetExpressionText(expression))); 
    } 
} 

는 당신이 다른 모든 도우미로 사용 :이 도우미를 사용

:이 내 대답은 get the generated clientid for a form field입니다 @ Html.ClientIdFor (model => model.client.email)

+0

답변과 답변에 많은 도움을 드리겠습니다. 삼 – Arthis

관련 문제