das ist komisch. Ich sehe Referenzen für @ Html.Button (), aber wenn ich tippe, dass Intellisense keinen solchen Helfer findet ... gibt es Dropdown-Listen, versteckte, Editoren usw., aber keine Schaltfläche!
was ist damit?
das ist komisch. Ich sehe Referenzen für @ Html.Button (), aber wenn ich tippe, dass Intellisense keinen solchen Helfer findet ... gibt es Dropdown-Listen, versteckte, Editoren usw., aber keine Schaltfläche!
was ist damit?
Antworten:
public static class HtmlButtonExtension
{
public static MvcHtmlString Button(this HtmlHelper helper,
string innerHtml,
object htmlAttributes)
{
return Button(helper, innerHtml,
HtmlHelper.AnonymousObjectToHtmlAttributes(htmlAttributes)
);
}
public static MvcHtmlString Button(this HtmlHelper helper,
string innerHtml,
IDictionary<string, object> htmlAttributes)
{
var builder = new TagBuilder("button");
builder.InnerHtml = innerHtml;
builder.MergeAttributes(htmlAttributes);
return MvcHtmlString.Create(builder.ToString());
}
}
@Html.Button("ButtonText", new {Name = "name", Value = "value" })
Format verwenden möchten , fügen Sie diese Klasse hinzu:public static MvcHtmlString Button(this HtmlHelper helper, string text, object htmlAttributes) { return Button(helper, text, HtmlHelper.AnonymousObjectToHtmlAttributes(htmlAttributes)); }
HtmlHelper.AnonymousObjectToHtmlAttributes
?
Ab MVC Preview 3 gibt es keinen Button Helper (nicht MVC3).
Es wurde in der Vergangenheit ein Haufen erwähnt, zum Beispiel: http://blog.wekeroad.com/blog/aspnet-mvc-preview-using-the-mvc-ui-helpers/ Wie auch immer das Rollen Ihrer eigenen ist trivial - ich habe eine Basis dafür muss ich es irgendwo hier ausgraben, aber im Wesentlichen nur ein neues Html.ButtonFor erstellen und den Quellcode von Html.LabelFor kopieren und die Ausgabe ändern, um ein Tag vom Typ input type = "button" zu erstellen.
So erweitern Sie die akzeptierte Antwort , dass Sie eine Senden-Schaltfläche an eine Modelleigenschaft binden können, aber einen anderen Text haben:
@Html.ButtonFor(m => m.Action, Model.LabelForCurrentAction(), new { @class = "btn btn-primary btn-large", type = "submit" })
Verwenden der folgenden leicht modifizierten Button
Hilfsklasse :
/// <summary>
/// Via /programming/5955571/theres-no-html-button
/// </summary>
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<string, object> htmlAttributes)
{
var builder = new TagBuilder("button") { InnerHtml = innerHtml.ToString() };
builder.MergeAttributes(htmlAttributes);
return MvcHtmlString.Create(builder.ToString());
}
public static MvcHtmlString ButtonFor<TModel, TField>(this HtmlHelper<TModel> html,
Expression<Func<TModel, TField>> 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);
}
}
MVC5, Bootstrap Version 3.2.0
@Html.ActionLink
(
linkText: " Remove",
actionName: "Index",
routeValues: null, // or to pass some value -> routeValues: new { id = 1 },
htmlAttributes: new { @class = "btn btn-success btn-sm glyphicon glyphicon-remove" }
)
Dadurch wird ein Link generiert, der wie eine Schaltfläche aussieht.
Razor scheint keinen HTML-Helfer "Button" zu haben. Sie finden wahrscheinlich Verweise auf eine benutzerdefinierte HTML-Hilfserweiterung.
Siehe hier: http://www.asp.net/mvc/tutorials/creating-custom-html-helpers-cs