0

EditorTamplatesからJQueryを使用してカレンダーを作成したいと思います。しかし、Html.TextBoxForからの入力テキストのIDを取得するのに苦労しています。また、ビューに複数のカレンダーを配置したいので、その値を直接割り当てることはできず、自分のコントロールのコンテキストに従う必要があります。

景色 :

<%@ 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」を取得する予定だった場合、「Date」しか受信しません。

それを解決するための素晴らしいアイデアはありますか?

前もって感謝します、

[編集]

私の見解に以下を追加しました:

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

しかし、私はそれがかなり嫌いです。それは私には見方をハックするように見えます。どう思いますか?

[/編集]

4

1 に答える 1

3

この質問を参照してください:フォームフィールド用に生成されたクライアントIDを取得します。これが私の答えです:

私はこのヘルパーを使用します:

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)));
    }
}

他のヘルパーと同じように使用します:@ Html.ClientIdFor(model => model.client.email)

于 2011-03-25T18:31:35.753 に答える