0

問題があり、この場所で説明しましたUIHit YesNoNull を作成するにはどうすればよいですか?

ヘルパーを作成してこの問題を解決しました。

public static MvcHtmlString YesNoNull(this HtmlHelper helper, string name)
{
    return YesNoNull(helper, name, false);
}

public static MvcHtmlString YesNoNull(this HtmlHelper helper, string name, bool selected)
{
    var builder = new StringBuilder(500);
    builder.Append(string.Format("<input id='checkbox_{0}' type='checkbox' />Есть", name));
    builder.Append("<script type=\"text/javascript\">$(function () {");
    builder.Append(string.Format("$('#checkbox_{0}').click(function () {{", name));
    builder.Append(@"var checked = $(this).attr('checked');if (checked != undefined) {");
    builder.Append(string.Format("$('#{0}').show();}}", name));
    builder.Append(string.Format("else {{$('#{0}').hide();}}  }});", name));
    builder.Append(string.Format("$('#checkbox_{0}').attr('checked', {1});", name, selected.ToString().ToLower())); 
    builder.Append(string.Format("var checked = $('#checkbox_{0}').attr('checked');if (checked != undefined){{ $('#{0}').show(); }}else{{$('#{0}').hide();}}", name));
    builder.Append("})</script>");




    return new MvcHtmlString(builder.ToString());
}

私はそれを次のように使用します:

@Html.YesNoNull("VenueUrl", false)
@Html.EditorFor(model => model.VenueUrl)

ヘルパーと唯一のデザインを使用せずに同じことを行うことは可能ですか:

@Html.EditorFor(model => model.VenueUrl)
4

1 に答える 1

1

~/Views/Shared/EditorTemplates/呼び出されたテンプレートを作成し、YesNoNull.cshtmlそこにマークアップを追加できると思います。

@Html.EditorForビューを呼び出すたびに、モデル タイプに一致するテンプレートが検索され~/Views/Shared/EditorTemplatesます。~/Views/Shared/DisplayTemplates/

したがって、文字列の場合は String.cshtml、DateTime の場合は DateTime.cshtml などになります。UIHint 属性を定義する場合は、UIHint をテンプレートとして呼び出したものをすべて使用する必要があります。

于 2012-06-25T10:42:27.130 に答える