C# 返回集合的Asp.net mvc操作生成包含system.linq.Enumerable的URL,如何删除它们

C# 返回集合的Asp.net mvc操作生成包含system.linq.Enumerable的URL,如何删除它们,c#,asp.net-mvc,url-rewriting,C#,Asp.net Mvc,Url Rewriting,我有一个mvc应用程序,它基本上生成视图,这些视图基本上是集合,但是是特定类型的集合 IEnumerable<IType> IEnumerable 现在我的URL包含这样的内容 www.site/home/section/param?System.Linq.Enumerable% 我想删除第节之后的任何内容 我已经尝试了routeMap,但无法运行system.linq等。请提供任何想法或帮助 这是我的行动方法 public ActionResult Whatever(IEnum

我有一个mvc应用程序,它基本上生成视图,这些视图基本上是集合,但是是特定类型的集合

IEnumerable<IType>
IEnumerable
现在我的URL包含这样的内容

www.site/home/section/param?System.Linq.Enumerable%

我想删除第节之后的任何内容

我已经尝试了routeMap,但无法运行system.linq等。请提供任何想法或帮助

这是我的行动方法

public ActionResult Whatever(IEnumerable<IType> whatever)
        {
            return View(whatever);
        }
public ActionResult Whatever(IEnumerable Whatever)
{
返回视图(无论什么);
}

您不能像在URL中那样传递集合,您不应该在重定向时将它们添加到
RouteValueDictionary
。只需发送一些基本信息,可以帮助您在重定向到的操作中获得所需的信息

Edit:根据您的代码,我们可以看到您的操作方法采用了一个
IEnumerable
,因此无论您在哪里调用此操作,都会传递一个。您不能这样做,您必须在action方法中生成列表。尝试以下方法:

public ActionResult Whatever()
{
    List<IType> whatever = new List<IType>();

    //populate your list here, then we can return it

    return View(whatever);
}
public ActionResult Whatever()
{
List whatever=新列表();
//在这里填写您的列表,然后我们可以返回它
返回视图(无论什么);
}

上面的问题非常有趣,花了我一段时间,我又回到了以前编写的mvc应用程序。答案很简单,但并不明显

在当前的mvc3中,即使您以匿名类型传递对象,将视图映射到视图模型,它也总是计算出collectiontype,并以某种方式将其附加到url。在本例中,它将整个案例作为

无论如何,正确的方法是将其包装在routevaluedictionary中

新的RouteValueDictionary(新的{controller=Constants.HOMECONTROLLER,action=Constants.APPLYAPP})

如果你正在将任何东西从一个动作传递到另一个动作,那么使用这个

return new RedirectToRouteResult(Constants.DEFAULTROUTE,
                     new RouteValueDictionary(new { controller = Constants.HOMECONTROLLER, action = Constants.APPLYAPP }));
而不是重定向到操作,因为这似乎会导致上面的url


谢谢Mattytomo的帮助,但这与我的情况无关,但可能对其他人有帮助。我根本无法将Mattytomo的回复标记为答案,因为它实际上误解了我的请求,也许我的请求不正确,但也误导了我。

我没有在任何地方传递集合,此url是从mvc本身生成的。我只是在视图中显示一个集合。My action通过调用“return view(something)”返回视图@user182630您必须在某个地方的重定向中传递它,您可以发布您的操作方法吗?@user182630查看您的操作方法如何将
IEnumerable
作为参数?那是你的问题。您必须在
which
操作方法中生成它,然后将其返回到视图。但是我的视图采用ienumerable,它不应该与system.linq有任何关系。enumerable@user182630这很好,您仍然可以返回它,但不能将其传递给Action方法
System.Linq.IEnumerable
IEnumerable