1
據我所知在HtmlHelper
類中沒有(擴展)方法,可以生成一個類型爲range
的HTML5 input
元素,所以我試圖實現我自己通過擴展HtmlHelper
類:自定義HtmlHelper方法,生成一個<input type =「range」> HtmlString
public static class MvcHtmlHelper
{
public static HtmlString RangeFor<TModel, TProperty>
(this HtmlHelper<TModel> htmlHelper,
Expression<Func<TModel, TProperty>> expression,
object htmlAttributes)
{
var name = ExpressionHelper.GetExpressionText(expression);
var metadata = ModelMetadata.FromLambdaExpression(expression,
htmlHelper.ViewData);
//var min = (string)((ViewDataDictionary<TModel>)htmlAttributes)["min"];
//var max = (string)((ViewDataDictionary<TModel>)htmlAttributes)["max"];
//var value = (string)((ViewDataDictionary<TModel>)htmlAttributes)["value"];
return Range(htmlHelper, min, max, value);
}
public static HtmlString Range(this HtmlHelper htmlHelper,
string name, string min, string max, string value = "0")
{
var builder = new TagBuilder("input");
builder.Attributes["type"] = "range";
builder.Attributes["name"] = name;
builder.Attributes["min"] = min;
builder.Attributes["max"] = max;
builder.Attributes["value"] = value;
return new HtmlString(builder.ToString(TagRenderMode.SelfClosing));
}
}
我試圖仿效現有TextBoxFor
擴展方法,它允許呼叫者通過匿名對象指定額外htmlAttributes
。不過,我在上面的註釋行中獲得了InvalidCastException
。
任何人都可以點我獲得來自匿名htmlAttributes
對象中的值(類似於如何TextBoxFor
處理htmlAttributes
謝謝我會測試一下。 – rexcfnghk