Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/287.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/html/77.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# Html助手赢得';不接受样式参数_C#_Html_Css_Asp.net Mvc_Razor - Fatal编程技术网

C# Html助手赢得';不接受样式参数

C# Html助手赢得';不接受样式参数,c#,html,css,asp.net-mvc,razor,C#,Html,Css,Asp.net Mvc,Razor,为了能够在网格中浏览页面并查看项目的详细信息,我需要做一个自定义帮助程序来替换标准的ActionLink。它可以完美地工作,但有一点:它不像任何其他助手那样接受css类 这是我的助手代码: using System.Collections.Generic; using System.Web.Routing; using System.Linq; using System.Web; namespace System.Web.Mvc { public static class HtmlEx

为了能够在网格中浏览页面并查看项目的详细信息,我需要做一个自定义帮助程序来替换标准的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;
        }
    }
}
使用System.Collections.Generic;
使用System.Web.Routing;
使用System.Linq;
使用System.Web;
命名空间System.Web.Mvc
{
公共静态类
{
公共静态MvcHtmlString ActionLinkUrlParam(此HtmlHelper帮助程序、字符串linkText、字符串actionName、对象routeValues=null、对象htmlAttributes=null)
{
mvchtml字符串链接;
RouteValueDictionary val=新的RouteValueDictionary();
if(routeValue!=null)
{
val=新的RouteValueDictionary(routeValues);
}
if(helper.ViewContext.HttpContext.Request.urlreferer.Query!=“”)
{
string[]results=helper.ViewContext.HttpContext.Request.urlreferer.Query.Replace(“?”,“).Replace(“%2F”,“/”).Replace(“%2F”,“/”).Split(新字符串[]{”&},StringSplitOptions.None);
如果(results.Length>0)
{
foreach(结果中的var项目)
{
val.Add(item.Split(新字符[]{'='})[0],item.Split(新字符[]{'='})[1]);
}
}
}
如果(htmlAttributes==null)
{
link=Html.LinkExtensions.ActionLink(helper、linkText、actionName、val);
}
其他的
{
字典html=新字典();
添加(“类”,htmlAttributes);
link=Html.LinkExtensions.ActionLink(helper、linkText、actionName、val、Html);
}
返回链接;
}
}
}
在ItemDetails视图中,我有以下按钮,每个人都在使用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>


@ViewBag.Menu@Html.ActionLink(Global.despathotitle,“Index”)/@Html.ActionLink(Global.Details_标题,“Details_KO”,new{id=Model.id})

@ActionLinkUrlParam(Global.BackToList,“Filter”,null,新的{type=“button”,@class=“btn btn primary active”})
我一直在更改css类,在web上寻找类似的案例,但我似乎找不到任何适合这种特定案例的东西

请告诉我这方面的信息是否丢失


提前感谢。

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

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

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

如果您查看源代码,则
过滤器
链接上的
属性是什么样子的?您可能想看看这个函数,我认为现有的ActionLink帮助程序使用这个函数来转换匿名对象,例如
新建{@class=“hello”}
导入RouteValueDictionary,然后可以像其他任何字典一样使用。Jason,我在浏览器中查看源代码,结果如下:
看起来我在
字典html=new dictionary();html.Add(“class”,htmlAttributes)中的格式设置错误
有什么建议吗?什么类型的对象是
htmlAttributes
?从生成的HTML来看,您可能需要类似
HTML.Add(“class”,htmlAttributes.@class)的内容;
而不是您现有的。谢谢Simon,我将在周一尝试。我非常喜欢您的方法,因为我不必维护helper html类,以防它们在视图中发生更改。