Tag: asp.net mvc

ASP.NET身份 – 不支持每种types的多个对象集

我在我的应用程序中使用ASP.NET身份发生错误。 不支持每种types的多个对象集。 对象集“身份用户”和“用户”都可以包含“推荐Platform.Models.ApplicationUser”types的实例。 我在stackoverflow中看到了一些关于这个错误的问题。 全部在相同types的两个DbSet对象上指示。 但是在我的DbContext中,不存在相同types的DbSets。 FindInync()方法在login期间引发的exception。 if (ModelState.IsValid) var user = await UserManager.FindAsync(model.UserName, model.Password); if (user != null && user.IsConfirmed) { 问题是我没有相同types的两个DbSets。 我的上下文看起来像这样: public class ApplicationDbContext : IdentityDbContext<ApplicationUser> { public ApplicationDbContext() : base("DefaultConnection") { } public System.Data.Entity.DbSet<RecommendationPlatform.Models.ApplicationUser> IdentityUsers { get; set; } } 和 public class RecContext : DbContext { public RecContext() : base("RecConnection") […]

ASP.NET MVC – 在Html.ActionLink(…)中传递数组对象作为路由值

我有一个方法返回一个数组(string[]),我试图将这个string数组传递到一个动作链接,以便它将创build一个查询string类似于: /Controller/Action?str=val1&str=val2&str=val3…etc 但是,当我通过新的{str = GetStringArray()}我得到以下url: /Controller/Action?str=System.String%5B%5D 所以基本上它是我的string[]和运行.ToString()上获取值。 有任何想法吗? 谢谢!

洋葱拱门依赖在同一层:基础设施和networking通信

我正在devise一个使用Jeffrey Palermo描述的洋葱架构的ASP.NET MVC应用程序。 这是一个ASP.NET MVC 2.0项目,我要求所有视图都使用专用视图模型进行强types化 – 我们不会将域模型传递给我们的视图。 我们使用AutoMapper进行翻译 – AutoMapper被隔离在基础架构中,Web不知道或在意使用AutoMapper。 目前,我正在Web项目中定义IViewModelMapping接口 – 仅仅因为这个服务将被控制器使用,并且可以直接访问它自己的视图模型。 这样接口就可以访问域模型(核心)和视图模型(networking)。 为了提供IViewModelMapping接口的实际实现,我在基础结构项目中创build了一个ObjectMapping命名空间,将实际的映射实现隔离到洋葱的基础设施。 在这样做的时候,这将需要基础架构依赖于核心和networking。 我的问题是:因为这两个项目在技术上都位于洋葱的郊区(在同一层) – 一个项目是否允许依赖于该层中的另一个项目? 有没有人注意到这个devise的任何潜在的陷阱? 另一种devise是将IViewMapper接口移动到Core中,但这是不可能的,因为Core无法访问ViewModel类。 我也可以将视图模型移动到Core中,但是我觉得他们不属于那里,因为它们是特定于UI层的。 所提出的体系结构如下所示 – 注意到,基础架构依赖于Core和Web。 Web仍然是孤立的,只能访问Core业务逻辑。 http://www.matthidinger.comhttp://img.dovov.comonion-arch.png

解耦ASP.NET MVC 5 Identity以允许实现分层应用程序

我是新来的ASP.NET MVC,我一直在开发一个MVC 5应用程序与个人用户authentication。 我一直在做分层模式,当做我的应用程序,如分离模型层,DAL层,回购等,但现在在MVC 5,我想能够使用用户和angular色pipe理和身份validation,他们称之为身份,然后对我的应用程序仍然具有这种分层结构,因为现在看起来,Identity与MVC项目本身以及用户和angular色模型以及上下文都非常相关。 我现在在应用程序中所做的是在MVC项目(在单独的文件夹中)中,我拥有所有我想要的单独图层,例如我的DAL,UnitOfWork,Repos,其他模型等,以便使其工作,现在。 而且我知道这不是正确的做法。 那么,任何人都可以向我提供一些关于这个问题的好例子或文章,或者如果可能或者不可以直接解释它,怎么样? Google对此并不友善。 谢谢!

是否有一个最佳做法,并推荐替代MVC中的会话variables

好的,在任何人试图确定这是一个“重复”的问题之前, 我已经回顾了大多数关于类似问题的SO上的post,但即使是所有的说法,我仍然有点困惑于决定性的问题,或者我应该就此一致同意。 但是我可以说我(根据职位)确定地确定答案是基于要求的范围。 但即使考虑到这一点,对于我如何处理这个问题,我的意见也显得太多了。 我的直接要求是,我需要从1个控制器中存储多个视图的可变数据。 更具体地说,我有一个控制器和相应的视图,处理购物车项目计数,我想坚持在多个视图的数据。 我在想,_layout视图是这个最合乎逻辑的select。 现在我已经成功地完成了这个任务,将值赋给一个从我的_layout视图中获取的Sessionvariables; 因此,即使用户在网站内的任何位置导航,购物车中的商品数量也会一直存在,直到他们离开网站或完成结帐; 在这种情况下,variables将在代码中清除。 我读过的post似乎有偏见,要么偏离会话variables,而是支持Cookies并将数据存储在数据库中; 或者说为了我打算使用它们的目的,Sessionvariables是完全可以使用的。 我读过的另一件事表明,如果由于信息存储在服务器上,网站上的stream量很高,会话variables可能会阻碍整体性能。 我个人不能certificate将这种types的信息存储在数据库中,然后敲击数据库,我想这可能会影响网站的性能,对于存储临时数据似乎有点矫枉过正。 TempData,ViewData和ViewBag在保存数据时不起作用,因此它们不是IMO要求的合乎逻辑的select。 如果还有另一个适用于Sessionvariables的替代方法(这对我来说很合适),我想知道它是什么。 2个提供最好build议似乎相互矛盾的post让我有些困惑。 缺点: 避免在ASP.NET MVC中使用会话状态是一个好习惯吗? 如果是,为什么和如何? 优点: 仍然可以在ASP.NET mvc中使用会话variables,或者有一些更好的select(如购物车) 似乎这个问题(尽pipe提出了许多不同的变化)没有我可以总结的明确答案。 如果有更好的方法来完成这个没有过度杀伤,那么这就是我正在寻找的答案。 我同时在Global.ascx应用程序开始部分看到了MVCfilter的使用,但是这对于在控制器级别设置的variables和静态variables可能不太合适。 有人可能会对这个话题提出许多不同的意见,也许会提供一个更确定的答案吗? 我敢肯定,不同的意见有其自己的位置,我不是企图抹黑他们。 但有一个明确的,可能是一致的答案会更好; 那么我可以通过其他职位来确定什么是最适合我的应用程序。 当然,如果这个问题没有确定的答案, 只要告诉我,我会尝试从其他职位得到我自己的答案。 谢谢 ================================================== ========= 对答复提供了更新的回应 caching和cookies似乎是从响应的一般偏好,但是我也注意到caching它不是一个理想的候选人跨多个Web服务器使用的声明,因为同步可能是一个潜在的问题。 对Tim的评价是,数据库存储已经过优化,用户可以select稍后返回并继续他们离开的地方。 这是一个很好的观点,但要高瞻远瞩。 这可能是合理的,因为有些用户可能不会在数据库中留下不必要的数据。 因此,为了保持数据库的优化和清洁(这对我而言是同等重要的),需要执行维护任务,根据设定的时间阈值自动使这些logging到期以考虑这些情况。 虽然维护任务不是一个不容置疑的select,但我仍然认为这仅仅是为了作为临时存储的目的而增加了一点工作。 尽pipe如此,我还是尊重蒂姆的build议,并认为在一定程度上反驳我的初步意见是值得的。 数据库似乎不是存储临时数据的可行scheme; 所以我认为妥协可能是将数据存储在数据库中(或者在购物车或类似的情况下)或许在结账之后。 就像您之前所说的那样,随后的访问可能会持续跟踪数据,因此您有交易logging。 但更重要的是,这些交易的数据与数据库保持真正的相关性。 还有人表示,尽pipeSession比数据库快, 但是尽pipe有一些警告,可以在某种程度上被其他机制所缓解,例如利用SessionStateBehavior属性,只是作为一个例子。 但是……我认为Erik用Dunning-Kruger效应开了点家。 虽然从这里给出的答案的内容和解释, 我严重怀疑任何回应者的专业知识都是有问题的。 尽pipe如此,我倾向于认同获得一致意见的事实可能比我的预期要高一些。 我更特别要寻找的是能够舒适地适应多种情况的技术的普遍共识。 […]

ASP.NET MVC:部分视图的正确位置?

任何人都可以确认在ASP.NET MVC中的部分视图的最佳位置? 我的想法是,如果它是一个全球性的观点,这将是在很多地方,然后共享使用。 如果它的一部分视图已经被包装到一个局部视图中以使代码阅读更容易,那么它应该进入Views / Controller目录 我是正确的还是我错过了什么?

“返回视图()”和“返回PartialView()”有什么区别

我明白,部分视图是用来渲染视图的一部分。 但我不明白什么是return View()和return PartialView()之间的区别,你什么时候使用每一个。

C#7本地函数不能按预期方式工作,也不会显示错误

我有一个Asp.Net MVC应用程序与框架版本.NET 4.5运行,我正在使用VS2017专业版。 用户可以上传附件,包括但不限于: 高强 字 幻灯片 PDF格式 JPEG PNG 所以我有一个privatefunction,如下所示: private string ImageExtension(string path) { string noImagePath = HttpContext.Current.Server.MapPath("~/Contenthttp://img.dovov.comTemplate/No-Image-Available-100×100.jpg"); string fileExtension = System.IO.Path.GetExtension(path); switch (fileExtension) { case ".jpg": case ".jpeg": case ".gif": case ".png": return path; default: return noImagePath; } } 正如你所看到的那样,这很简单,不会做任何事情。 由于我只是在一个地方使用这个地方,我想到了使用本地函数的新C#7function。 所以我已经提前创build了我的主函数,并在其中添加了ImageExtension(string path) 。 public void BugInfo(HttpPostedFileBase file) { if(file != null […]

如何在.NET MVC 2中实现正确的HTTPerror handling?

我一直在努力整天在我的ASP.NET MVC 2应用程序中实现error handling。 我已经看过各种技术,但都没有正常工作。 我正在使用MVC2和.NET 4.0(在MVC3发布之前启动了项目;我们将在我们发布初始版本后进行升级)。 在这一点上,我会很乐意妥善处理404和500错误 – 403(需要授权)也会很好,其次是各种其他具体的回应。 现在,我可以在404之前全部拿到404,全部500,全部302,在500之前全部拿到302。 这是我的要求(它应该非常接近HTTP的基本要求): 如果找不到资源,则抛出一个404,并显示一个404请求的URL的特定页面。 不要像302那样返回一个中间响应代码。理想情况下,保持请求的URL,而不是像/Error/NotFound那样显示一个新的URL,但是如果后者显示,确保我们没有返回redirect响应来获取它。 如果发生内部服务器错误,请抛出500,并显示一个500特定的错误,并指出错误的位置。 同样,不要返回中间响应代码,理想情况下不要更改URL。 以下是我想要的404: 找不到静态文件: /Content/non-existent-dir/non-existent-file.txt 未find控制器: /non-existent-controller/Foo/666 find控制器,但未find操作: /Home/non-existent-action/666 find控制器和操作,但操作无法find请求的对象: /Home/Login/non-existent-id 以下是我认为的500: 发布一个错误的值: POST /User/New/new-user-name-too-long-for-db-column-constraint 与数据无关的问题,如Web Service端点未响应 其中一些问题需要通过特定的控制器或模型来识别,然后控制器应该抛出相应的HttpException。 其余的应该更通用地处理。 对于404情况#2,我试图使用自定义的ControllerFactory来抛出404如果控制器无法find。 对于404情况#3,我试图使用一个自定义的基本控制器来覆盖HandleUnknownAction并抛出404。 在这两种情况下,我在404之前得到了一个302.而且,我从来没有得到500个错误; 如果我修改Web.config来在我的Web服务端点input一个拼写错误,我仍然得到一个302,然后一个404说不能find使用 Web服务的URL(控制器/操作)。 我也得到请求的URL作为(不需要的)查询string参数: /Error/NotFound?aspxerrorpath=/Home/non-existent-action 这两种技术来自http://www.niksmit.com/wp/?p=17 (如何使用ASP.Net MVC获得正常的404(页面未find)错误页面),从http:// richarddingwall指出。名称/ 2008/08/17 /为基础的战略,为资源-404-错误-在-ASPNET-MVC / 如果在Web.config中有<customErrors mode="On" defaultRedirect="~/Error/Unknown" redirectMode="ResponseRedirect" /> ,我会得到相应的响应代码,但是我的Error控制器永远不会被调用。 取出redirectMode属性让我的MVC错误的意见,但与一个介入302和一个更改的URL – […]

Asp.net MVC资源文件的最佳实践

以下资源文件的最佳用法是什么? 属性 – >资源( Phil在DataAnnotation中使用此资源进行本地化) App_GlobalResources文件夹 App_LocalResources文件夹 我也想知道(1)和(2)在asp.net mvc应用程序中有什么区别。 谢谢, Soe Moe