mvc html 按钮,.net - There's no @Html.Button ! - Stack Overflow

悠悠 2022-10-07 12:00 102阅读 0赞

To expand on the accepted answer, so you can bind a submit button to a model property but have different text:

@Html.ButtonFor(m => m.Action, Model.LabelForCurrentAction(), new { @class = “btn btn-primary btn-large”, type = “submit” })

///

/// Via https://stackoverflow.com/questions/5955571/theres-no-html-button

///

public static class HtmlButtonExtension

{

public static MvcHtmlString Button(this HtmlHelper helper, object innerHtml, object htmlAttributes)

{

return helper.Button(innerHtml, HtmlHelper.AnonymousObjectToHtmlAttributes(htmlAttributes));

}

public static MvcHtmlString Button(this HtmlHelper helper, object innerHtml, IDictionary htmlAttributes)

{

var builder = new TagBuilder(“button”) { InnerHtml = innerHtml.ToString() };

builder.MergeAttributes(htmlAttributes);

return MvcHtmlString.Create(builder.ToString());

}

public static MvcHtmlString ButtonFor(this HtmlHelper html,

Expression> property,

object innerHtml,

object htmlAttributes)

{

// lazily based on TextAreaFor

var attrs = HtmlHelper.AnonymousObjectToHtmlAttributes(htmlAttributes);

var name = ExpressionHelper.GetExpressionText(property);

var metadata = ModelMetadata.FromLambdaExpression(property, html.ViewData);

string fullName = html.ViewContext.ViewData.TemplateInfo.GetFullHtmlFieldName(name);

ModelState modelState;

if (html.ViewData.ModelState.TryGetValue(fullName, out modelState) && modelState.Errors.Count > 0)

{

if( !attrs.ContainsKey(“class”) ) attrs[“class”] = string.Empty;

attrs[“class”] += “ “ + HtmlHelper.ValidationInputCssClassName;

attrs[“class”] = attrs[“class”].ToString().Trim();

}

var validation = html.GetUnobtrusiveValidationAttributes(name, metadata);

if(null != validation) foreach(var v in validation) attrs.Add(v.Key, v.Value);

string value;

if (modelState != null && modelState.Value != null)

{

value = modelState.Value.AttemptedValue;

}

else if (metadata.Model != null)

{

value = metadata.Model.ToString();

}

else

{

value = String.Empty;

}

attrs[“name”] = name;

attrs[“Value”] = value;

return html.Button(innerHtml, attrs);

}

}

发表评论

表情:
评论列表 (有 0 条评论,102人围观)

还没有评论,来说两句吧...

相关阅读