Answers:
如果您尝试扩展此方法:
public static MvcHtmlString ActionLink(this HtmlHelper htmlHelper, string linkText, string actionName, object routeValues);尽管我确定Khaja的Object扩展会起作用,但是您可以通过创建RouteValueDictionary并传入routeValues对象,从Context中添加其他参数,然后使用ActionLink重载(使用RouteValueDictionary而不是对象)来返回来获得更好的性能:
这应该可以解决问题:
    public static MvcHtmlString MyLink(this HtmlHelper helper, string linkText, string actionName, object routeValues)
    {
        RouteValueDictionary routeValueDictionary = new RouteValueDictionary(routeValues);
        // Add more parameters
        foreach (string parameter in helper.ViewContext.RequestContext.HttpContext.Request.QueryString.AllKeys)
        {
            routeValueDictionary.Add(parameter, helper.ViewContext.RequestContext.HttpContext.Request.QueryString[parameter]);
        }
        return helper.ActionLink(linkText, actionName, routeValueDictionary);
    }以下扩展类将为您提供所需的内容。
public static class ObjectExtensions
{
    public static IDictionary<string, object> AddProperty(this object obj, string name, object value)
    {
        var dictionary = obj.ToDictionary();
        dictionary.Add(name, value);
        return dictionary;
    }
    // helper
    public static IDictionary<string, object> ToDictionary(this object obj)
    {
        IDictionary<string, object> result = new Dictionary<string, object>();
        PropertyDescriptorCollection properties = TypeDescriptor.GetProperties(obj);
        foreach (PropertyDescriptor property in properties){
            result.Add(property.Name, property.GetValue(obj));
        }
        return result;
    }
}public static string TextBox(this HtmlHelper html, string value, string labelText, string textBoxId, object textBoxHtmlAttributes, object labelHtmlAttributes){}这将接受文本框应具有的id值,并且标签应引用该ID值。如果使用者现在在textBoxHtmlAttributes中不包含“ id”属性,则该方法将创建错误的标签。
我可以通过反射检查是否将此属性添加到labelHtmlAttributes对象中。如果是这样,我想添加它或创建一个添加了它的新匿名对象。但是因为无法通过遍历旧属性并添加自己的“ id”属性来创建新的匿名类型,所以我有些困惑。
具有强类型ID属性,然后具有匿名类型“属性”属性的容器将要求代码重写不符合“添加ID字段”的要求。
希望这种反应是可以理解的。今天到头了,我的脑子再也无法排成一列。