- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
在我的 ASP.NET MVC 4 应用程序中,我可以过滤多个标签。在 HTML 中,它看起来像这样:
<form>
<label>
<input type="checkbox" name="tag" value="1">One
</label>
<label>
<input type="checkbox" name="tag" value="2">Two
</label>
<label>
<input type="checkbox" name="tag" value="3">Three
</label>
<input type="submit" name="action" value="Filter">
</form>
选中第一个和第三个复选框时,查询字符串被序列化为 ?tag=1&tag=3
并且我的 Controller 很好地传递了具有以下类类型的对象:
// Filter class
public class Filter {
public ICollection<int> tag { get; set; }
}
// Controller method
public ActionResult Index(AdFilter filter)
{
string url = Url.Action("DoFilter", filter);
// url gets this value:
// "/controller/Index?tag=System.Collections.Generic.List%601%5BSystem.Int32%5D"
// I would expect this:
// "/controller/Index?tag=1&tag=3"
...
}
但是,调用 Url.Action
会导致序列化集合的类型名称,而不是实际值。
如何做到这一点?
MVC 的标准基础架构可以处理描述为输入的多键。难道没有可以反过来处理它的标准基础设施吗?我错过了什么吗?
最佳答案
您可以通过以下方式进行:
string url = Url.Action("DoFilter", TypeHelper2.ObjectToDictionary(filter) );
TypeHelper2.ObjectToDictionary
是 .NET 内部方法的修改版本,可以在此 two file gist 中找到.
更改的行为:当项目实现 IEnumerable
时,每个项目都有一个条目在返回的字典中以 "Name[index]"
作为键创建(索引基于 0)。这是可能的,因为 MVC Controller 的绑定(bind)器可以处理 tag=1&tag=3
和 tag[0]=1&tag[1]=3
查询字符串。
关于c# - 如何使用具有多个同名值的 RouteValues,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28482103/
在我的 ASP.NET MVC 4 应用程序中,我可以过滤多个标签。在 HTML 中,它看起来像这样: One Two Three
我有一个 ActionLink 链接 @Ajax.ActionLink("Delete it!", "Delete", new {id = getTheID}, new AjaxOptions { C
我有一个包含以下 javascript 的部分页面: var url = '@Url.Action("Details", "Users", null)/' + userID; 除了具有 url 结构的
Request 和 RouteData.Values 中的 QueryString 有什么区别? 我们可以改用它们吗? 最佳答案 RouteValues 只有在 global.asax 中定义时才会从
我有一个名为“UserProfile”的区域。 从索引 View 中,我想从根 Controller (非区域)调用一个 Action 。 我使用了Html.ActionLink(“Index”,“H
所以我有一个 Url Action Create new teacher & assign to account. 传入两个路由值:createAndAssign 和 teacherID。 现在当我转
所以我有一个 Url Action Create new teacher & assign to account. 传入两个路由值:createAndAssign 和 teacherID。 现在当我转
将日期时间参数传递给 RedirectToAction 时 (Asp.Net MVC2)通过传递 DateTime 或传递日期:“13/4/2000” return RedirectToAct
我正在做以下工作: 1- 用户在文本框中输入一个值。 2- 然后点击编辑进入编辑 View 。 这是我的代码: 问题是我不知道如何从 textBox 中获取值并将其传递给 Actio
我有一个通用方法,它根据当前 Controller 、当前操作和当前可选参数(如果有)生成链接结构。 public static string GetLink(this HtmlHelper help
因此,如果我在第一个 Controller 中执行此操作: public class AController:Controller { public ActionR
在我的操作方法助手中使用它之前,我希望能够选择将哪些属性添加到我的对象中。所以我使用了一个 ExpandoObject 来实现这一点。 dynamic routeValues = new Expand
我有一个编码问题,我似乎无法掌握有关路线参数的问题。基本上,它要么从不 URL 编码,要么加倍 URL 编码。我只想对它进行单一编码! 这是我注册的路线: routes.MapRoute("Scan"
想象一个定义如下的对象: public class MyViewModel{ public List MyList { get; set; } } 在我看来,我有这个操作链接: @Ajax.A
HTML 助手 @Html.Pager来自 MvcPaging 2.0. 有 .Options(o => o.RouteValues(object RouteValues))它可以将 Model 返回
@{ ViewBag.Title = "About Us"; } @using (Html.BeginForm(new RouteValueDictionary { {"Action","In
我有一个疑问是: 当我使用下面的代码时: @(Html.ActionLink("Click Me", "ACTION", new {QueryName = ViewBag.QueryName})) 我
我的 View 如下所示: " %> 我的 Controller Action : public ActionResult S
假设我们有一个页面包含一些支持从数据库搜索的元素,那么在 Post Action 中我们需要找到哪些元素是事件的,并根据该创建路由值,如下所示: List SearchParameters = Get
当通过 RouteValueDicitonary或匿名对象到 @Url.Action 方法(或其任何类似物)中,有没有办法正确传递集合对象或 IEnumerable以便它生成一个与默认模型绑定(bin
我是一名优秀的程序员,十分优秀!