Tag: asp.net mvc

如何支持NTLM身份validation与ASP.NET MVC中的回退forms?

如何在ASP.NET MVC应用程序中实现以下内容: 用户打开内联网网站 如果可能,用户将进行静默身份validation 如果NTLM身份validation没有成功,请向用户显示登录表单 用户指示登录密码,并从预定义域列表中选择域 user使用AD在代码中进行身份validation 我知道如何实现4和5,但无法找到有关如何组合NTLM和表单的信息。 因此,永远不会显示NTLM本机登录/密码对话框 – 透明身份validation或外观漂亮的登录页面。 该怎么办? 是否应该询问用户登录名和密码? 可以使用她当前的凭据(域用户名)而无需输入登录名和密码吗? 更新这些,调查相同的问题: 当我问这个时,我并不完全理解NTLM身份validation如何在内部工作。 这里需要了解的重要一点是,如果用户的浏览器不能正确支持NTLM,或者用户禁用了NTLM支持,那么服务器永远不会有机会解决这个问题。 Windows身份validation的工作原理: 客户端向服务器发送常规HTTP请求 服务器响应HTTP状态401并指示必须使用NTLM身份validation来访问资源 客户端发送NTLM Type1消息 服务器使用质询响应NTLM Type2消息 客户端发送Type3消息以响应challenge 服务器响应请求的实际内容 如您所见,不支持NTLM的浏览器不会转到步骤(3),而是会向用户显示IIS生成的错误401页面。 如果用户没有凭据,则在取消NTLM身份validation后,弹出对话框窗口浏览器也不会继续(3)。 因此,我们没有机会自动将用户重定向到自定义登录页面。 这里唯一的选择是有一个“网关”页面,我们决定用户是否应该支持NTLM,如果是,请重定向到受NTLM保护的主页。 如果没有,请显示登录表单并通过手动输入登录名和密码进行身份validation。 通常通过匹配IP范围或通过检查预定义IP表来基于用户的IP地址和/或主机名做出决定。

ASP.NET MVC Cookie实现

我尝试在我的应用程序中实现一个基本的cookie帮助器。 主要是我每次检查基本控制器是否设置了cookie。 如果是cookie public class MyCookie { public static string CookieName {get;set;} public virtual User User { get; set; } public virtual Application App { get; set; } public MyCookie(Application app) { CookieName = “MyCookie” + app; App = app; } public void SetCookie(User user) { HttpCookie myCookie = HttpContext.Current.Request.Cookies[CookieName] ?? new HttpCookie(CookieName); myCookie.Values[“UserId”] = […]

处理不同文化validation的最佳方法是什么?

我正在尝试构建一个多语言MVC应用程序。 我的应用程序中有一个表单,我有字段输入成本。 我能够使用西class牙文化创建一个记录。 但是在尝试更新记录时,我得到了jqueryvalidation错误。 我收到一条默认错误消息: 该字段必须是数字。 在我的视图模型中,我设置了以下属性。 [LocalizedDisplayName(“Label_Cost”)] [RegularExpression(“^[^,]+$”, ErrorMessage = null, ErrorMessageResourceName = “Error_Message_Html_Tags_Prevented”, ErrorMessageResourceType = typeof(Resources))] [Range(0, 9999.99, ErrorMessage = null, ErrorMessageResourceName = “Error_Message_Cost_Not_Valid”, ErrorMessageResourceType = typeof(Resources))] public decimal? Cost { get; set; } 我已经在我的Gobal.asax文件中设置了以下内容 protected void Application_AcquireRequestState(object sender, EventArgs e) { try { HttpCookie cookie = HttpContext.Current.Request.Cookies.Get(“CurrentCulture”); string culutureCode = cookie != […]

与Model和ViewModel混淆

我正在学习ASP.NET MVC并下载了几个示例应用程序。 MusicStore等…… 我来自wpf背景,我们有MVVM模式。 我注意到他们使用了模型和ViewModel的概念。 在MVVM中很明显,您将视图绑定到ViewModel,将模型注入viewModel。 在MVC中你有一个控制器,但我不确定和混淆所有联系在一起,因为我看不到模型注入ViewModel 我有以下结构 MyCompany.Entities.dll(所有型号都在这里)EG产品 MyCompany.Dal.dll(所有存储库都在这里) MyCompany.Services.dll(由MyCompany.WebUI.Controller调用,调用MyCompany.Dal) MyCompany.WebUI.MyApp MyCompany.Tests 从我看到的一些示例中,您的模型充当ViewModel.Am我是否正确? 让我们拿一个控制器,我有类似的东西 public class ProductController { public ProductController(IProductRepository productRepository) { //omitted as not relevant } } public class ProductVM { public ProductVM() { // Shouldn’t we inject the model here RG Product } } 我可以参考一些N层示例吗? ViewModel的概念在MVC中是否有效? 标准是什么? 谢谢你的任何建议。

.SendMailAsync()在MVC中使用

我正在尝试从我的MVC应用程序发送电子邮件,它在我使用.Send()方法时发送正常,但需要一段时间才能返回所以我想使用.SendMailAsync()函数,但我收到以下错误执行。 此时无法启动异步操作。 异步操作只能在异步处理程序或模块中启动,或者在页面生命周期中的某些事件中启动。 如果在执行页面时发生此exception,请确保将页面标记为 这是我的代码示例。 如何配置此命令以使用.SendMailAsync()发送 电子邮件包装类: using System.Net.Mail; namespace Helpers { public class Email { // constants private const string HtmlEmailHeader = “”; private const string HtmlEmailFooter = “”; // properties public List To { get; set; } public List CC { get; set; } public List BCC { get; set; } public string […]

如何在ASP.NET MVC 4中获取控制器操作的自定义注释属性?

我正在为ASP.NET MVC中的应用程序使用基于权限的授权系统。 为此,我创建了一个自定义授权属性 public class MyAuthorizationAttribute : AuthorizeAttribute { string Roles {get; set;} string Permission {get; set;} } 这样我就可以通过角色或具有注释的特定权限密钥来授权用户 public class UserController : Controller { [MyAuthorization(Roles=”ADMIN”, Permissions=”USER_ADD”)] public ActionResult Add() [MyAuthorization(Roles=”ADMIN”, Permissions=”USER_EDIT”)] public ActionResult Edit() [MyAuthorization(Roles=”ADMIN”, Permissions=”USER_DELETE”)] public ActionResult Delete() } 然后我在MyAuthorizationAttribute类中覆盖具有类似逻辑的AuthorizeCore()方法(伪代码) protected override bool AuthorizeCore(HttpContextBase httpContext) { if(user not authenticated) return false; if(user has […]

OAuthWebSecurity与Facebook未按预期使用电子邮件权限

使用新的OAuthWebSecurity进行Facebook身份validation,我在我的Facebook应用程序中添加了电子邮件权限。 现在,正如我可以阅读的那样,我需要定义一个范围,以便能够在结果中实际获取电子邮件。 到目前为止没有范围我没有收到用户的电子邮件,我不知道为什么因为我看不到在哪里定义“范围”。 它只是ASP.NET MVC 4默认身份validation控制器外部登录的一小部分。

在Html.DropDownlistFor中获取多个选定值

@Html.DropDownListFor(m => m.branch, CommonMethod.getBranch(“”,Model.branch), “–Select–“, new { @multiple = “multiple” }) @Html.DropDownListFor(m => m.division, CommonMethod.getDivision(Model.branch,Model.division), “–Select–“, new { @multiple = “multiple” }) 我有两个DropDownListFor实例。 我想将之前存储为Model.branch和Model.division的值设置为true。 这些是存储的id的字符串数组 class CommonMethod { public static List getDivision(string [] branchid , string [] selected) { DBEntities db = new DBEntities(); List division = new List(); foreach (var b in branchid) { […]

将checkBox的值传递给asp.net mvc4中的控制器操作

我想测试是否从我的acion methon中选中了复选框,我需要的是将复选框值从视图传递给控制器 这是我的看法 @using (Html.BeginForm(“Index”, “Graphe”)) { Responsable: Selectionnez — 我试着这样做: public ActionResult Index( string responsables, bool checkResp) { Highcharts chart = new Highcharts(“chart”); if (responsables != null) { if (checkResp) chart = Global(); else chart = Resp(responsables); } else chart = Global(); return View(chart); } ,但我有这个错误: Le dictionnairedeparamètresconientuneentréeNullpourleparamètre«checkAct»de type non Nullable«System.Boolean»pourlaméthode«System.Web.Mvc.ActionResult Index(System.String,System.String,Boolean)»dans«Project .Controllers.GrapheController»。 Unparamètrefacultatifdoitêtreuntyperéférence,un […]

当控制器类在不同的程序集中时,如何将Controller注册到ASP.NET MVC中?

我的目标是修改asp.net mvc的控制器注册表,以便我可以在单独的(子)程序集中创建控制器和视图,只需将View文件和DLL复制到主机MVC应用程序,新控制器就可以“插入” “到主机应用程序。 显然,我需要某种IoC模式,但我不知所措。 我的想法是引用一个带有system.web.mvc的子程序集,然后开始构建从Controllerinheritance的控制器类: 单独组装: using System.Web; using System.Web.Mvc; namespace ChildApp { public class ChildController : Controller { ActionResult Index() { return View(); } } } 耶和华都很好。 但后来我考虑修改主机应用程序的Controller注册表以在运行时加载我的新子控制器,我感到困惑。 也许是因为我需要更深入地了解C#。 无论如何,我以为我需要创建一个CustomControllerFactory类。 所以我开始编写一个覆盖GetControllerInstance()方法的类。 在我打字时,intellisence突然出现: 主机MVC应用程序: public class CustomControllerFactory : DefaultControllerFactory { protected override IController GetControllerInstance(System.Web.Routing.RequestContext requestContext, Type controllerType) { return base.GetControllerInstance(requestContext, controllerType); } } 现在,在这一点上,我很茫然。 我不知道那是做什么的。 […]