能够浏览网格中的页面并查看项目'细节,我需要做一个自定义助手来替换标准的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课程,在网上寻找类似的案例,但我似乎无法为这些特殊情况找到任何东西。
请告诉我是否缺少任何相关信息。
提前致谢。
答案 0 :(得分:1)
感谢@Jason Evans。他建议使用一个函数让我调查它,在另一个线程中有一些东西建议我可以使用:
var attrs = HtmlHelper.AnonymousObjectToHtmlAttributes(htmlAttributes);
if (!enabled)
{
attrs.Add("disabled", "disabled");
}
return htmlHelper.DropDownListFor(expression, selectList, null /* optionLabel */, attrs);
我在“attrs”变量中添加了我的css类,就是这样。如果css遭受修改,我将不得不记住这一点,但除此之外还有效。