我在MVC5(VS2013)中使用授权/角色时遇到了麻烦.
身份验证几乎可以开箱即用(也就是说只需使用Visual Studio创建默认的MVC项目).我将DefaultConnection连接字符串更改为有效(但不存在)的数据库.然后我注册一个新的用户和数据库被自动创建,以表,如AspNetUsers和AspNetRoles.
但是,我似乎无法对角色做任何事情.要做的第一件事似乎是使用C#代码添加角色,例如:
Roles.CreateRole("Admin");
Run Code Online (Sandbox Code Playgroud)
我收到一条消息的异常:
"尚未启用角色管理器功能."
我在web.config中使用以下命令启用它:
<roleManager enabled="true"/>
Run Code Online (Sandbox Code Playgroud)
现在得到例外:
"无法连接到SQL Server数据库."
这曾经非常容易使用System.Web.Security.SqlRoleProvider,但不适用于MVC5默认的新提供程序.关于这一点有很多非常复杂的文章,但在我看来,它是如此必要和直接的东西,必须有一个简单的方法来使它工作.
非常感谢任何帮助.
如果我Html.EditorFor在字符串类型的属性上使用,则生成的元素默认<input>为“文本”类型。
或者,如果该属性具有该属性,[DataType(DataType.MultilineText)]则Html.EditorFor生成一个<textarea>.
但是,如果我使用标签助手,那么我必须为自己选择元素类型,例如<input asp-for='MyProperty' />. 这可以使用有关属性的信息来确定输入的类型(文本、日期、电子邮件等),但将始终生成<input>,从不生成<textarea>,即使我有该[DataType]属性。
这似乎与我可以在一个地方从单行更改为多行的想法背道而驰:模型。现在我必须浏览所有相关视图并自己进行更改。
在我看来,我完全有可能编写自己的标签助手,它可以查看属性属性并决定是否生成<input>或<textarea>,但我找不到任何对预定义的引用。
有没有这样一个预定义的标签助手,如果没有,有什么原因吗?
在.NET 6中有一些不错的新LINQ扩展方法,例如
var oldest = context.People.MaxBy(p => p.Age);
Run Code Online (Sandbox Code Playgroud)
但是,EF 提供程序似乎尚不支持这些功能(当然不支持 SQLite 或 SQLServer,两者都是 6.0.0 版本)。
有谁知道这些提供商计划何时提供这些服务?