如何将自定义成员资格提供程序与ASP.NET MVC [Authorize()]属性绑定?我已经通过一些关于如何创建自定义成员资格提供程序的教程进行了大肆宣传,但是我发现的有关如何将其连接到应用程序的所有信息似乎都围绕着常规的ASP.NET WebForms应用程序,这些应用程序看起来像是一块蛋糕
我正在解决刚刚在ASP.NET MVC中发生的大量"魔术",这很好,但我习惯用WebForms方式插入内容,所以这个"它只是工作"的方法有点像为我弯腰.我怎么知道什么时候我应该做繁重的工作,或者我应该只依靠魔法发生的事情?
我在哪里将我的提供商绑定到MVC应用程序?我是否正确地假设它是通过[Authorize()]属性调用的,一旦我把它连接起来?
我有一个Excel电子表格,它从我需要运行计算的其他来源导入数据.我需要处理的数据在命名范围内 - 它恰好在C12:C36范围内 - 但它被称为"SumData".
此范围内的值包含许多错误,目前包括#NUM!和#N/A,但可能包含其他错误.我需要总结这些价值观.
我理解如何做总和公式:
=SUM(SumData)
Run Code Online (Sandbox Code Playgroud)
要么
=SUM(C12:C36)
Run Code Online (Sandbox Code Playgroud)
我也可以使用IFERROR来检查错误:
=IFERROR(C12:C36, 0)
Run Code Online (Sandbox Code Playgroud)
但IFERROR似乎只检查当前相应的行到我输入的公式.即如果我的公式是在D12中输入的,它只检查行C12上的错误,并返回该值(如果C12包含错误,则返回0).
如果我把两者结合起来:
=SUM(IFERROR(SumData,0))
Run Code Online (Sandbox Code Playgroud)
我没有得到有效的返回值.它基本上给了我最近的相应行 - 例如:
C D
-----------
12 #NUM!
13 2 =SUM(IFERROR(SumData,0)) = 2 (I would expect this to produce 48)
14 5
15 7
16 #N/A
17 23
18 6
19 5
Run Code Online (Sandbox Code Playgroud)
我究竟做错了什么?
最近,我听到很多关于函数式编程语言的好东西,比如F#.另外[和无关],我也注意到MVC开始获得大量曝光 - 也许是自Silverlight/WPF推出以来.
如果没有先做我的研究,我从来就不会成为一个赶时髦的人 - 实际上我花了一些时间来实现.NET的飞跃.有人刚刚在我之前提出的关于早期采用新技术的问题中发表了评论,这让我停下来思考.
我一直在努力争取时间学习WPF,但我现在开始怀疑这是否可行.像F#这样的语言和MVC编程模型是留下还是仅仅是下一个时尚?或者人们真的认为这些成为C#/ VB和OOP的潜在替代品?
我的大多数开发都是内部应用程序,可以是在内部网上部署的富Web应用程序,也可以是winforms实用程序应用程序,以便在各个计算机上进行分发.到目前为止,我的选择技术非常标准--T-SQL/PL*SQL,C#/ VB,JavaScript/AJAX,CSS.
我想我正在努力确定的是,这些技术的混合在不久的将来会在我的工具箱中最有效/最有用吗?
我正在尝试编写一个ASP.NET MVC应用程序,其中用户权限基于点而不是硬编码角色本身.我已经尝试过研究授权和成员资格提供程序,但我找到的所有信息都指向基于角色的身份验证,而这种身份验证并不是我模型的真正部分.
在写这个问题时,我想知道我是否正在研究正确的事情.这会是一个自定义角色提供者吗?这样的事情存在吗?我突然想到,拥有一个自定义角色提供程序来检查用户的点以确定他们是否处于特定角色可能是最简单的方法,但我不知道我需要使用的关键字与ASP.NET MVC能够找到合适的信息.
实现这一目标的最佳方法是什么?
我可以理解在加载单独的DLL的应用程序启动时增加的成本,但是在单独的库中引用代码时是否存在开销?
假设我有我的应用程序(无论是ASP.NET WebForms,MVC还是WinForms),我决定出于这样或那样的原因,从维护的角度来看,最好将几个类移到他们自己的独立库中以便我可以将其他应用程序放在其上一段时间.
引用分离库中的类比在我将它们保存在主应用程序中并在那里引用它们有更多的开销吗?我想把它们移出去,但是应用程序有可能需要大量的缩放,所以我不想通过这样做来拍摄自己.
通常情况下,我会将代码移到它自己的库中而不再考虑它,但通常我不会编写需要这个程序所需的扩展级别的应用程序,所以我现在第二次猜测自己.
我有一个基本的MVC应用程序 - 从MVC应用程序模板生成.我创建了一个基本的控制器,它包含通常的Index,Details,Edit和Create方法; 我有几个类来保存我的对象Person:
public class Person
{
public int Id { get; set; }
public string FirstName { get; set; }
public string LastName { get; set; }
public string Description { get; set; }
}
Run Code Online (Sandbox Code Playgroud)
另一个模拟假DAL.它不会将数据保存到文件或数据库,它只是为了这个原型的目的的快速模型:
public class PersonData
{
/* Fake out our initial repository */
static List<Person> People = new List<Person>()
{
new Person() { Id=1, FirstName="John", LastName="Doe", Description="King of the world" },
new Person() { Id=2, FirstName="Jane", LastName="Doe", Description="Chief whip cracker" }
};
/* Set …
Run Code Online (Sandbox Code Playgroud) 我理解如何使用委托,我可以使用lambda表达式来使用谓词.我已经到了一个点,我想实现一个使用谓词作为参数的方法,并且无法弄清楚如何引用谓词来查找我的集合中的匹配:
private static T FindInCollection<T>(ICollection<T> collection, Predicate<T> match)
{
foreach (T item in collection)
{
//So how do I reference match to return the matching item?
}
return default(T);
}
Run Code Online (Sandbox Code Playgroud)
我想用类似的东西来引用它:
ICollection<MyTestClass> receivedList = //Some list I've received from somewhere else
MyTestClass UsefulItem = FindInCollection<MyTestClass>(receivedList, i => i.SomeField = "TheMatchingData");
Run Code Online (Sandbox Code Playgroud)
如果有人可以给我一个解释或指出我关于谓词实现的参考,我会很感激.那里的文档似乎都与传递谓词(我可以做得很好)有关,而不是实际实现使用它们的功能......
谢谢
当用户已登录但角色不正确时,如何设置我的 Authorize(Roles="blah") 令牌以重定向到“您无权执行此操作”?目前它重定向到登录页面,这不是我们所追求的。我们认为将用户重定向到此页面是令人困惑的,因为他们已经登录。如果他们没有登录,则应该重定向到登录页面。
c# ×6
.net ×4
asp.net-mvc ×4
asp.net ×1
excel ×1
excel-2010 ×1
future-proof ×1
generics ×1
predicate ×1