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类,在网上寻找类似的案例,但似乎找不到任何适合这种特定案例的东西。
请告诉我是否有任何关于这方面的信息丢失。
提前谢谢。
感谢@Jason Evans。他关于使用函数的建议让我仔细研究了一下,在另一个线程中,有一些建议我可以使用:
var attrs = HtmlHelper.AnonymousObjectToHtmlAttributes(htmlAttributes);
if (!enabled)
{
attrs.Add("disabled", "disabled");
}
return htmlHelper.DropDownListFor(expression, selectList, null /* optionLabel */, attrs);
我在"attrs"变量中添加了我的css类,就这样。如果css受到修改,我必须记住这一点,但除此之外,它还在起作用。