.net - कोई @ एचटीएमएल नहीं है। बटन!




asp.net-mvc-3 razor (4)

एमवीसी 5, बूटस्ट्रैप वर्जन 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.Button () के लिए संदर्भ देखता हूं लेकिन जब मैं टाइप करता हूं कि इंटेलिसेंस को ऐसा सहायक नहीं मिलता है ... ड्रॉपडाउन सूची, छुपा, संपादक, और कैटरिया है, लेकिन कोई बटन नहीं है!

उसके साथ क्या है?


एमवीसी पूर्वावलोकन 3 के रूप में कोई बटन सहायक नहीं है (एमवीसी 3 नहीं)

उदाहरण के लिए अतीत में एक समूह का उल्लेख किया गया था: http://blog.wekeroad.com/blog/aspnet-mvc-preview-using-the-mvc-ui-helpers/ हालांकि अपना खुद का रोलिंग छोटा है - मेरे पास आधार है इसके लिए यहां कहीं और मुझे इसे खोदना होगा, लेकिन अनिवार्य रूप से बस एक नया HTML बनाओ। बटन के लिए और HTML कोड से स्रोत कोड कॉपी करें और इनपुट प्रकार = "बटन" टैग बनाने के लिए आउटपुट बदलें।


स्वीकार्य उत्तर पर विस्तार करने के लिए, ताकि आप एक मॉडल प्रॉपर्टी में सबमिट बटन को बाध्य कर सकें लेकिन अलग-अलग टेक्स्ट हो:

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

निम्नलिखित थोड़ा संशोधित Button सहायक वर्ग का उपयोग करना:

/// <summary>
/// Via https://.com/questions/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);
    }
}

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());
  }
}




htmlbutton