问题标签 [asp.net-mvc-5.1]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
1 回答
750 浏览

asp.net-mvc - MVC5 属性路由,为没有可选参数的路由发出 null

我在控制器上有:

[路由前缀(“”)]

带有路由的动作:

如果我在浏览器中输入这些网址,这将有效:

本地主机/待办事项
本地主机/待办事项/某事
本地主机/待办事项/某事/某事

但是这些都返回null:

这些返回正确的网址:

Url.Action("ThingsToDo", "ControllerName", new { filter1 = "something", filter2 = "something" })
Url.Action(MVC.ControllerName.ThingsToDo("something", "something"))

当我不需要可选参数时如何正确生成 url 的任何帮助将不胜感激。

0 投票
2 回答
1414 浏览

asp.net-mvc - 如何在 RouteCollectionRoute 中找到正确的路线?

我正在测试 ASP MVC 路由。我在 ASP MVC 5.1 中遇到属性路由问题

当我有这样的控制器时:

然后为了测试哪个路由匹配特定请求,我调用routes.GetRouteData. 我得到一个System.Web.Routing.RouteData包含路由以及应该说明哪个控制器和操作匹配的值。

问题是这个路由现在是RouteCollectionRoute的一个实例, 这个内部类是对这两个动作的一组路由的包装器。控制器在 中RouteData.values,但动作不在。您可以使用routeData.Values["MS_DirectRouteMatches"] as IList<RouteData>.

在给出的示例中,列表中将有两个路由,用于两个操作方法。我需要知道哪些包含的路由实际上是匹配的,以便我可以读取匹配路由的操作方法名称是什么。我该如何解决这条路线?

我对拥有 a 的设计选择有点困惑RouteCollectionRoute。路由时,你有一个路由集合,然后你通过调用来解析一个 url 的路由GetRouteData。现在你有一条路线。但如果是RouteCollectionRoute这样,它仍然是路由的集合,并且路由解析还没有结束。拥有 RouteCollectionRoute 获得了什么?路由解析现在是一个两步过程吗?还是递归过程?

我知道我正在浏览 ASP MVC 的内部结构,但这是唯一的方法,因为它在设计时并没有考虑到这种可测试性。即使是像公开一些内部类或方法这样简单的事情也会有很大帮助!

0 投票
5 回答
37944 浏览

asp.net-mvc - 在 MVC 5 中上传图像时,Request.Files.Count 始终为 0

我在带有一些字符串字段和图像的模型上有一个 Post 控制器。完全相同的代码适用于 MVC4,但在 MVC 5 中 Request.Files.Count 始终为 0

我的模型有 byte[] 用于图像而不是 HttpPostedFileBase

我的观点:

我试过省略 data_ajax = "false" 但没有用。

我的帖子控制器如下:

在调试器中,我看到 Request.Files.Count 始终为零,我不知道为什么?我已经从另一个 MVC4 项目中复制了视图和控制器代码,它工作正常。

在 IE Developer 窗口中,我看到表单主体是空的。

0 投票
1 回答
876 浏览

asp.net-identity - 用户名密码哈希设置

我尝试将 UserName 设置为我的自定义 Firstname+ Lastname 属性。它设置好了。但是当我尝试登录失败时。这是因为密码是使用电子邮件作为盐进行哈希处理的吗?任何方式我都可以覆盖它以在登录时仍然使用电子邮件作为哈希但使用用户名作为用户名?

我正在使用 Identity 2.0.0 beta1

解决。为了美观,我在名字和姓氏字段之间留了一个空间。删除这个空间已经解决了这个问题。

谢谢

0 投票
2 回答
1444 浏览

asp.net-mvc - MVC5 应用程序在调用安全操作时重定向到 login.aspx

我已经使用 VS 2013 创建了一个新的 ASP.NET MVC 5.1 Web 应用程序。在我本地的 IIS Express 中,一切正常。一个控制器装饰有 Authorize-Attribute。当我在此控制器中打开安全操作而不在此之前登录时,我被正确地重定向到登录页面(/Account/Login)。但在我的高效 IIS 7 (Windows Server 2008) 中,服务器将我重定向到 login.aspx。

当我使用 OWIN 中间件并且旧的 IIS 7.0 无法使用它时,这会发生吗?在 bin 目录中,有我项目中的所有 OWIN-dll。

当我使用像谷歌这样的外部登录提供程序时,重定向过程也存在问题。与上述相同的程序。:-(

有人对我有一些提示吗?

谢谢。安德烈亚斯

0 投票
1 回答
1198 浏览

c# - Does Html.EditorFor support more than class in MVC5.1?

Without modifying my Editor Templates, is it possible to pass other HTML attributes into the Html.EditorFor Helper extension?

The example shows a class being passed in:

There are many potential scenarios but I want to decorate my input with a data-myvar="value". When I try this I get compiler errors invalid anonymous type declaratory.

Additionally if it is possible can I pass this in in addition to a class? i.e. pass in an array of htmlattributes. I'm struggling to find any documentation apart from the release notes.

John Galaway's article

0 投票
0 回答
287 浏览

asp.net-mvc - 首次运行应用程序时出现 ValidateAntiForgeryToken 错误

当我将应用程序从本地开发服务器发布到共享托管服务器时,有人第一次登录时出现错误。

我试过添加一个机器密钥,但这似乎没有什么不同。在尝试登录之前,我正在刷新登录页面。似乎与此相同的问题

MVC 4 中的防伪 cookie 令牌和表单字段令牌不匹配

但是机器钥匙没有解决它。我的应用程序是 ASP.Net 4.5.1 MVC5.1

0 投票
2 回答
5661 浏览

asp.net-mvc - Why Does Html.DisplayForModel() display only one item from list?

I would like to display a list of items in a View using Html.DisplayModelFor().

Here is the controller:

Here is the view:

Here is the DisplayTemplate named ApplicationUser:

The result is only the first item being displayed.

If I change the view to:

Then each item is displayed.

But the second view makes no sense to me: In the foreach, 'item' does not appear to be used. Yet it is looping through the items.

0 投票
2 回答
35 浏览

asp.net-mvc - 为什么没有使用 EditorForModel() 显示集合

我想使用 EditorForModel() 显示一个集合。

根据布拉德威尔逊的博客,这应该是不费吹灰之力。但是,它对我不起作用。

控制器:

班上:

风景:

这可以很好地显示其他属性,但不能显示集合。如何让集合显示?我已经尝试并试图让它工作,因为我读过的所有东西似乎都说这应该像上面那样工作。

0 投票
1 回答
986 浏览

mvcsitemapprovider - MvcSiteMapProvider 出现奇怪的错误。它有些如何找到2个根节点

我只是通过装饰器的方式使用没有 xml 的 MvcSiteMapNode。正如我在这篇文章中所说

我确信我只有一个带有空根节点的节点。它也总是有效,除了有时我得到这个错误。

声明了多个没有父键的节点。必须为 SiteMap 中除 1 个节点之外的所有节点设置父键。没有父键的节点将被视为根节点。请注意,在 XML 中定义节点时,XML 文件必须包含根节点。

您可以通过将 MvcSiteMapProvider_EnableSiteMapFile 设置设置为“false”来禁用 XML 配置。对于外部 DI 配置,您可以通过从 MvcSiteMapProvider DI 模块中删除 XmlSiteMapNodeProvider 来禁用 XML 解析。

或者,您可以将 MvcSiteMapProvider_IncludeRootNodeFromSiteMapFile 设置设置为“false”以从 XML 文件中排除根节点,但包括所有其他节点。对于外部 DI 配置,可以在 XmlSiteMapNodeProvider 的构造函数中找到此设置。

SiteMapCacheKey: 'sitemap://localhost/'

不明确的根节点:

父键:'' | 控制器:“家”| 行动:“索引”| 区域:'管理员' | 网址:'/管理员' | 键:“根”| 来源:'MvcSiteMapNodeAttribute'

父键:'' | 控制器:“家”| 行动:“索引”| 区域:'管理员' | 网址:'/管理员' | 键:“根”| 来源:'MvcSiteMapNodeAttribute'

我的应用程序设置

我认为这与站点地图的初始化方式有关。它可能容易受到跨线程操作的影响。它可能会被双重初始化。

你对此有什么建议吗?

提前致谢。