यह अजीब है। मैं वहाँ @ Html.Button () के लिए संदर्भ देख रहा हूं, लेकिन जब मैं टाइप करता हूं कि Intellisense को ऐसा हेल्पर नहीं मिलता है ... वहाँ ड्रॉपडेललिस्ट, हिडन, एडिटर्स, वगैरह, लेकिन कोई बटन नहीं है!
उसके साथ क्या है?
यह अजीब है। मैं वहाँ @ Html.Button () के लिए संदर्भ देख रहा हूं, लेकिन जब मैं टाइप करता हूं कि Intellisense को ऐसा हेल्पर नहीं मिलता है ... वहाँ ड्रॉपडेललिस्ट, हिडन, एडिटर्स, वगैरह, लेकिन कोई बटन नहीं है!
उसके साथ क्या है?
जवाबों:
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" })
प्रारूप का उपयोग करना चाहते हैं , तो इस वर्ग को जोड़ें:public static MvcHtmlString Button(this HtmlHelper helper, string text, object htmlAttributes) { return Button(helper, text, HtmlHelper.AnonymousObjectToHtmlAttributes(htmlAttributes)); }
HtmlHelper.AnonymousObjectToHtmlAttributes
पहले कभी कैसे नहीं देखा ?
Mvc पूर्वावलोकन 3 (mvc3 नहीं) के रूप में कोई बटन सहायक नहीं है
यह उदाहरण के लिए अतीत में एक गुच्छा का उल्लेख किया गया था: http://blog.wekeroad.com/blog/aspnet-mvc-preview-using-the-mvc-ui-helpers/ हालांकि आपका खुद का रोल करना तुच्छ है - मेरे पास एक आधार है इसके लिए कहीं न कहीं इधर उधर मुझे इसे खोदना होगा, लेकिन अनिवार्य रूप से एक नया Html.ButtonFor बनाएं और Html.LabelFor से सोर्स कोड कॉपी करें और इनपुट टाइप = "बटन" टैग बनाने के लिए आउटपुट बदलें।
स्वीकृत उत्तर पर विस्तार करने के लिए , आप एक मॉडल संपत्ति के लिए एक सबमिट बटन को बांध सकते हैं, लेकिन अलग पाठ है:
@Html.ButtonFor(m => m.Action, Model.LabelForCurrentAction(), new { @class = "btn btn-primary btn-large", type = "submit" })
निम्नलिखित थोड़ा संशोधित Button
सहायक वर्ग का उपयोग करना :
/// <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, बूटस्ट्रैप ver 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" }
)
यह एक लिंक उत्पन्न करेगा जो एक बटन की तरह दिखता है।
रेज़र में "बटन" एचटीएमएल सहायक नहीं होता है। आपको कस्टम-निर्मित HTML सहायक एक्सटेंशन के संदर्भ मिलने की संभावना है।
यहां देखें: http://www.asp.net/mvc/tutorials/creating-custom-html-helpers-cs