将多个值传递给ASP.NET MVC控制器

时间:2010-09-22 11:22:53

标签: asp.net-mvc

我想将多个值传递给控制器​​。控制器看起来像

Page(string type, string keywords, string sortType)

在asp.net页面中,

我有

<%=Url.Action("Page", "Search", new { type = "new",keywords = keywords, sortType = "Date" }) %>

但是type和sorType的值在控制器内传递为null。

我在这里做错了什么?

1 个答案:

答案 0 :(得分:1)

我刚刚进行了双重检查,这应该可以正常工作。我在一个新的MVC应用程序的Home控制器中创建了这个控制器方法:

public ActionResult Page(string type, string keywords, string sortType)
{
    this.ViewData["Type"] = type;
    this.ViewData["Keywords"] = keywords;
    this.ViewData["SortType"] = sortType;
    return this.View("Index");
}

然后将其添加到索引视图中:

<ul>
<% foreach (var item in ViewData) { %>
    <li><%: item.Key %> = <%: string.IsNullOrEmpty(item.Value as string) ? "null" : item.Value %></li>
<% } %>
</ul>

<%: Html.ActionLink("Hello", "Page", "Home", new { type = "new", keywords = "blahblah", sortType = "Date" }, null) %>

单击“Hello”链接后,页面会正确显示以下内容:

o Type = new
o Keywords = blahblah
o SortType = Date

因此,如果这在一个简单的新MVC应用程序中有效,我认为它必须是控制器中的其他方法或导致它的路由问题。