您好,
我正在使用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 :(得分: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)