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

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
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值