如何使用ActionLink传递查询字符串?

时间:2012-07-08 12:46:23

标签: asp.net-mvc query-string actionlink

您好,

我正在使用ASP.NET MVC 3,我需要生成这样的URL:MyURL.se/?CS.C2=113

我试过这个:

<%= Html.ActionLink(subItem.Name, "List", "Ad", new { CS.C2=subItem.Id}, null) %>

但是这将抛出: CS0746:无效的匿名类型成员声明符。必须使用成员分配,简单名称或成员访问权声明匿名类型成员。

CS.C2是动作所需的viewClass的一部分。

那么如何为此链接生成正确的URL?

修改:

public ActionResult List(AdList data)
{
    //Fill data
    return View(data);
}

我试过这个:https://stackoverflow.com/a/10011614/1490727但它会抛出:

没有为此对象定义无参数构造函数。 描述:执行当前Web请求期间发生未处理的异常。请查看堆栈跟踪以获取有关错误及其源自代码的位置的更多信息。 异常详细信息:System.MissingMethodException:没有为此对象定义无参数构造函数。

2 个答案:

答案 0 :(得分:1)

我最终以这样的方式手动编写它:

<a href="?CS.C2=<%=item.Id%>" title="<%=item.Name%>"><%=item.Name%></a>

如果可以通过Action.Link生成此链接,我会很高兴听到它。

答案 1 :(得分:1)

我可以做这样的事情......

<强>一个。创建自定义html帮助器

public static MvcHtmlString MyActionLink(this HtmlHelper htmlHelper, string linkText,
string action, string controller, IDictionary<string, object> routeValues, 
object htmlAttributes)
{
         return htmlHelper.ActionLink
         (
            linkText, 
            action, 
            controller, 
            new RouteValueDictionary(routeValues), 
            HtmlHelper.AnonymousObjectToHtmlAttributes(htmlAttributes)
         );
}

<强>湾像这样使用

@Html.MyActionLink(subItem.Name, "List", "Ad", 
new Dictionary<string, object> { { "CS.C2", subItem.Id } }, null)

<强>更新

您不需要自定义操作助手。您可以直接传递RouteValueDictionary,如下所示,

@Html.ActionLink(subItem.Name, "List", "Ad", 
new RouteValueDictionary{ { "CS.C2", subItem.Id } }, null)