Html Helper赢得';t采用样式参数

本文关键字:样式 参数 Helper 赢得 Html | 更新日期: 2023-09-27 18:20:48

为了能够在网格中的页面中导航并查看项目的详细信息,我需要做一个自定义的助手来替换标准的ActionLink。它完美地工作,但有一点:它不像任何其他助手那样使用css类。

这是我的助手代码:

using System.Collections.Generic;
using System.Web.Routing;
using System.Linq;
using System.Web;
namespace System.Web.Mvc
{
    public static class HtmlExtensions
    {
        public static MvcHtmlString ActionLinkUrlParam(this HtmlHelper helper, string linkText, string actionName, object routeValues = null, object htmlAttributes = null)
        {
            MvcHtmlString link;
            RouteValueDictionary val = new RouteValueDictionary();
            if (routeValues != null)
            {
                val = new RouteValueDictionary(routeValues);
            }
            if (helper.ViewContext.HttpContext.Request.UrlReferrer.Query != "")
            {
                string[] results = helper.ViewContext.HttpContext.Request.UrlReferrer.Query.Replace("?", "").Replace("%2F", "/").Replace("%2f", "/").Split(new string[] { "&" }, StringSplitOptions.None);
                if (results.Length > 0)
                {
                    foreach (var item in results)
                    {
                        val.Add(item.Split(new Char[] { '=' })[0], item.Split(new Char[] { '=' })[1]);
                    }
                }
            }
            if (htmlAttributes == null)
            {
                link = Html.LinkExtensions.ActionLink(helper, linkText, actionName, val);
            }
            else
            {
                Dictionary<string, object> html = new Dictionary<string, object>();
                html.Add("class", htmlAttributes);
                link = Html.LinkExtensions.ActionLink(helper, linkText, actionName, val, html);
            }
            return link;
        }
    }
}

在项目详细信息视图中,我有以下按钮,每个人都可以很好地使用css类,但对于我使用自定义助手的类。这是该代码的片段:

    <div class="acciones">
    <div class="float-left">
        <p>
             @ViewBag.Menu @Html.ActionLink(Global.DespachoTitle, "Index") / @Html.ActionLink(Global.Details_Title, "Details_KO", new { id=Model.Id }) 
        </p>
    </div>
    <div class="float-right">
        <input data-bind="click: $root.displayDetails" type="submit" class="btn btn-primary" value="Detalle" />
        <input data-bind="click: $root.displayCeder" type="submit" class="btn btn-primary" value="Ceder" />
        <input data-bind="click: $root.displayFacturas" type="submit" class="btn btn-primary" value="Facturas" />
        <input data-bind="click: $root.displayBoletos" type="submit" class="btn btn-primary" value="Boletos" />
        <input data-bind="click: $root.displayMSDs" type="submit" class="btn btn-primary" value="MSD" />
        <input data-bind="click: $root.displayDevoluciones" type="submit" class="btn btn-primary" value="Devoluciones" />
        <input data-bind="click: $root.displayCertificaciones" type="submit" class="btn btn-primary" value="Certificaciones" />
        <input data-bind="click: $root.displayOtrasImputaciones" type="submit" class="btn btn-primary" value="Otras Imputaciones" />
        @Html.ActionLinkUrlParam(Global.BackToList, "Filter", null, new { type = "button", @class = "btn btn-primary active" })
    </div>
</div>

我一直在更改css类,在网上寻找类似的案例,但似乎找不到任何适合这种特定案例的东西。

请告诉我是否有任何关于这方面的信息丢失。

提前谢谢。

Html Helper赢得';t采用样式参数

感谢@Jason Evans。他关于使用函数的建议让我仔细研究了一下,在另一个线程中,有一些建议我可以使用:

var attrs = HtmlHelper.AnonymousObjectToHtmlAttributes(htmlAttributes);
if (!enabled)
{
    attrs.Add("disabled", "disabled");
}
return htmlHelper.DropDownListFor(expression, selectList, null /* optionLabel */, attrs);

我在"attrs"变量中添加了我的css类,就这样。如果css受到修改,我必须记住这一点,但除此之外,它还在起作用。