2012-07-08 61 views
0

嗨,如何通过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:没有为此对象定义的无参数构造函数。

+0

你可以发布你的动作代码吗?谢谢。 – 2012-07-08 12:54:33

+0

发布后,Adlist是一个复杂的类,我需要设置的设置是AdList.CS.CS2。 – Ivy 2012-07-08 12:57:27

回答

1

我结束了手动custructing这样的:

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

如果它能够生成Action.Link这个环节我会很高兴听到这个消息。

+0

您是否尝试过使用Razor语法将其清理一下?您也可以在Global.asax中创建一个自定义路由,它将生成您所需的适当链接结构。 – 2012-07-08 15:55:49

+0

我还没有迁移到Razor(在这个解决方案中的很多工作)。我试图创建一个新的自定义路线,但我没有弄清楚,所以上面是一个简单的修复。 – Ivy 2012-07-10 17:52:55

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) 

UPDATE

你不需要自定义操作帮手。你可以直接通过RouteValueDictionary如下,

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