我正在尝试使用ASP.NET MVC中的用户和组对Active Directory进行身份验证.
我在所有类中都添加了以下属性(帐户类除外):
[Authorize (Roles="SubcontractDB Users")]
Run Code Online (Sandbox Code Playgroud)
该组位于活动目录中的OU = Area-> OU = Groups-> OU = Company-> CN = SubcontractDB下.我假设我还需要在web.config中设置一个RoleManager,我试图按如下方式进行:
<roleManager defaultProvider="ADRoleProvider">
<providers>
<clear />
<add name="ADMembershipProvider"
type="System.Web.Security.ActiveDirectoryMembershipProvider"
connectionStringName="ADConnectionString"
attributeMapUsername="sAMAccountName" />
</providers>
</roleManager>
Run Code Online (Sandbox Code Playgroud)
我的连接字符串是:
<add name="ADConnectionString"
connectionString="LDAP://blah.com:389/DC=blah,DC=wateva,DC=com"/>
Run Code Online (Sandbox Code Playgroud)
显然我做错了,因为这不起作用.我想要做的就是允许访问属于AD中某个组成员的用户.
我的视图中有一堆下拉列表,例如:
@Html.DropDownListFor(model => model.Process, Model.ProcessList)
Run Code Online (Sandbox Code Playgroud)
它们都SelectList基于数据库表中的数据,如下所示:
ProcessList = new SelectList(_db.Processes, "ID", "Name");
Run Code Online (Sandbox Code Playgroud)
哪里_db.Processes返回一个ObjectSet<Process>.
我遇到的问题是,有时由下拉列表设置的属性可能没有选择,即null.如何null向SelectList> 添加选择
在用户运行某些操作(例如单击"返回..."链接或保存他们正在编辑的记录)后,我反复遇到的问题是处理重定向到上一页.
以前每当我需要知道要返回的页面时,我都会为returnURL当前视图提供一个参数.
http://blah.com/account/edit/1?returnURL="account/index"
Run Code Online (Sandbox Code Playgroud)
这不是处理这种情况的非常简洁的方法,因为有时返回URL包含必须包含在URL中的搜索字符串等参数.
http://blah.com/account/edit/1?returnURL="account/index?search="searchTerm""
Run Code Online (Sandbox Code Playgroud)
此外,当用户在返回页面之前可以向前转到另一页面时会产生问题,returnURL因为您必须returnURL通过所有访问过的页面.
简单地调用浏览器的Back功能也不够,因为您可能希望页面刷新,例如显示您刚刚在上一页保存的编辑.
所以我的问题是,有没有人找到一种聪明的方法来处理这种情况,特别是在MVC环境中?
注意:我正在使用ASP .NET MVC,所以如果可能的话,我希望得到与之相关的答案,但欢迎任何想法.
我正在使用ADO .NET实体框架从数据库导入我的模型.我的数据库中的表有一堆外键,所有外键都有抽象名称,例如FKDevice132610.
当我将表导入到我的模型中时,它会为每个外键引入导航属性,但是会根据它们链接到的表名导入名称.如果某个表有多个外键,则会在末尾附加一个数字.

在这种情况下,Devices1是ParentDevices,Devices2是ChildDevices.有没有办法可以将此信息输入我的外键(比如使用描述或名称),以便实体框架为我的导航属性导入有意义的名称?
我正在使用C#和Razor开发ASP.NET MVC 3应用程序.
我有一个看起来像这样的搜索表单:

搜索表单以下列方式工作:
第一个下拉列表中的选择直接与我的ADO.NET Entity Framework模型类中的属性相关(因此直接与表列相关).
用户需要能够在搜索时明确选择哪个属性和哪个匹配方法,例如用户将明确搜索等于'132'的进程号的所有匹配.
我的第一种方法是使用动态linq从搜索条件构造Where子句(参见我原来的问题).但是我开始认为这不是最好的方法.
我也希望有一个解决方案,不需要我为每个属性+匹配标准组合硬编码结果.
有关如何实施此搜索的任何建议?它不必使用我当前的搜索表单,完全接受符合要求的任何其他想法.
我正在添加一个来自Infragistics的控件库参考,以在我的ASP .NET MVC 3 Razor视图中使用它们的控件.我已经添加了dll作为项目的参考.


如果我using Infragistics.Web.Mvc在文件的顶部添加一个,我的控制器可以很好地访问命名空间.
有两种方法可以告诉视图包含命名空间.首先是放在@using Infragistics.Web.Mvc视图的顶部.但是,如果我尝试,我会收到以下错误:
找不到类型或命名空间名称"Infragistics"(您是否缺少using指令或程序集引用?)
第二个是在视图Web.config的页面部分添加对命名空间的调用,如下所示:
<system.web.webPages.razor>
<host factoryType="System.Web.Mvc.MvcWebRazorHostFactory, System.Web.Mvc, Version=3.0.0.0, Culture=neutral, PublicKeyToken=ABCABCABCABCABC" />
<pages pageBaseType="System.Web.Mvc.WebViewPage">
<namespaces>
Other namespaces...
<add namespace="Infragistics.Web.Mvc"/>
</namespaces>
</pages>
</system.web.webPages.razor>
Run Code Online (Sandbox Code Playgroud)
但这也不起作用.
我能让它工作的唯一方法是在根Web.config文件中添加以下行:
<system.web>
<compilation debug="true" targetFramework="4.0">
<assemblies>
...
<add assembly="Infragistics.Web.Mvc, Version=3.11.1.2010, Culture=neutral, PublicKeyToken=blahblahblah" />
</assemblies>
</compilation>
Run Code Online (Sandbox Code Playgroud)
关于Web.config的一些进一步调查,我发现通过包含该行,它告诉编译器在编译ASP .NET资源时使用该资源.我不得不使用SN.exe来查找PublicKeyToken.
我究竟做错了什么?
我ActionMailer上课了
class UserMailer < ActionMailer::Base
default from: "no-reply@spicy-millennium.com"
def submission_reminder user
@user = user
mail :to => user.email, :subject => "Your timesheet needs to be submitted!"
end
end
Run Code Online (Sandbox Code Playgroud)
如果我UserMailer.submission_reminder(current_user)在开发中调用它会返回一个Mail::Message像预期的对象.
我的应用程序中调用此方法的位置在lib文件夹中的模块中:
module TimesheetSubmissionNotifier
def self.send_submission_reminders
User.all.each { |user| UserMailer.submission_reminder(user).deliver }
end
end
Run Code Online (Sandbox Code Playgroud)
当我TimesheetSubmissionNotifier.send_submission_reminders在开发中调用时,UserMailer.submission_remind(user)返回邮件消息并调用deliver,一切正常.
问题是当我TimesheetSubmissionNotifier.send_submission_reminders通过rspec测试调用时,UserMailer.submission_reminder(user)返回nil.
如果我UserMailer.submission_reminder(user)直接从rspec测试中调用,它将返回预期的邮件消息.
以下是我的config/environment/test.rb中与ActionMailer相关的唯一行:
config.action_mailer.delivery_method = :test
config.action_mailer.default_url_options = { :host => 'localhost:3000' }
Run Code Online (Sandbox Code Playgroud)
任何想法为什么该方法返回零?
当我运行我的cap部署时,它抱怨它无法访问日志文件:
Rails错误:无法访问日志文件.请确保/var/superduperapp/releases/20120329011558/log/production.log存在并且是chmod 0666.日志级别已提升为WARN,输出将定向到STDERR,直到问题得到解决.
看来我必须手动创建一个日志文件夹.有没有办法用Capistrano做到这一点,所以无论谁在部署它都不记得每次进行新部署时都要记住创建文件夹?
我目前正在尝试使用Ruby和Rails,我在关于元编程的教程和书籍中有几个部分.许多人提到它是Ruby的重要组成部分,但它们并没有真正详细说明.这就好像元编程是Ruby程序员的最后边界.来自.NET背景我很难理解它为什么如此有用.
如果我在视图上,如何访问该视图当前表示的ruby对象的ID?
例如,如果我在谈论blah.com/jobs/1如何获得1?
我考虑过修剪当前的URL,但这似乎太脆弱了,特别是考虑到我有嵌套资源.我能想到的另一个简单方法就是拥有一个隐藏的字段,但在没有任何表格的节目页面上隐藏输入似乎很愚蠢.
.net ×5
asp.net-mvc ×5
c# ×2
ruby ×2
actionmailer ×1
capistrano ×1
eigenclass ×1
javascript ×1
razor ×1
returnurl ×1
rspec ×1
search ×1