Tag: asp.net mvc

多站点ASP.NET身份2的中间件

背景 : 在一个项目中,我获得了创建中间件的工作,该中间件使用身份2进行身份validation,取代了他们拥有的简单成员项目。 我将角色和用户扩展到我的喜欢,一切都很好。 现在我需要制作这个中间件,多站点准备好了。 要求 : 每个站点都被视为不同的应用程序; 每个用户名都是唯一的,如果他拥有权限,则可以登录多站点; 每个站点都有自己的唯一角色,并且它们可以与其他站点具有相同的名称(不是描述名称)(使ID成为角色表中唯一的唯一属性)。 每个角色都有自己的一组属性,这些属性可以并且可能具有不同的值,来自其他站点中具有相同名称的其他角色。 想法 : 我在思考如何解决这个问题的方式是: 由于角色具有ID并且它应该是唯一的,因此具有相同名称的不同角色应该没有问题(因此我必须从角色名称中删除唯一性)。 每个角色都属于一个应用程序,因此角色和应用程序(或站点,如果您想使其更简单)之间的多对一连接。 就是这样,那应该是非常简单的。 问题 : 我一直在尝试扩展Identity,以便我可以解决问题,但似乎我无法用identityDbContext覆盖角色名称的唯一性,因此,我的ApplicationDbContext现在inheritance了DbContext。 问题 : 我知道身份非常灵活,我可以从另一个角度来解决这个问题,我现在没有想到,因为我会有很多变化来改变usermanager,userstore,rolestore和rolemanager。 这是一个“我正在以正确的方式解决这个问题”的问题,因为到目前为止,我还没有找到任何关于在身份2中解决这种方法的问题。 感谢您的任何帮助!

ASP.NET中的全局变量

我希望阻止一个线程输入代码,而另一个线程仍在执行该位代码: 我目前正在进行以下操作: global.asax.cs private static bool _isProcessingNewIllustrationRequest; public static bool IsProcessingNewIllustrationRequest { get { return _isProcessingNewIllustrationRequest; } set { _isProcessingNewIllustrationRequest = value; } } 然后在MVC中: public ActionResult CreateNewApplication() { if (!Global.IsProcessingNewIllustrationRequest) { Global.IsProcessingNewIllustrationRequest = true; // DO WORK… RUN CODE Global.IsProcessingNewIllustrationRequest = false; return View(“Index”, model); } else { // DISPLAY A MESSAGE THAT ANOTHER […]

如何告诉属性使用自定义消息处理程序的基本身份validation?

我正在遵循Badri L.的Pro ASP .NET Web API安全性第8章,试图为将由HTTP / JS客户端使用的Web应用程序实现基本身份validation。 我已将以下身份validation处理程序添加到我的WebAPI项目中: public class AuthenticationHandler : DelegatingHandler { private const string SCHEME = “Basic”; protected async override Task SendAsync(HttpRequestMessage request, System.Threading.CancellationToken cancellationToken) { try { // Request Processing var headers = request.Headers; if (headers.Authorization != null && SCHEME.Equals(headers.Authorization.Scheme)) { Encoding encoding = Encoding.GetEncoding(“iso-8859-1”); // etc 当我使用[Authorize]在我的API中修饰方法并在上面的if语句中设置断点时, headers.Authorization在第一次请求时为null。 如果我继续这个中断,if语句再次被命中,这次使用headers.Authorization.Scheme作为“Negotiate”,而不是“Basic”: […]

通过向导方法填充ViewModel

我找到了如何在ASP MVC中执行向导的很好的答案。 asp.net mvc中的多步注册流程问题(splitted viewmodels,single model) 我只有一个与此相关的问题。 将数据填充到视图模型中的最佳做法是什么? 让我们说在第2步中我需要向用户显示数据列表。 列表数据来自DB。 然后我会继续为视图模型创建构造函数,还是应该在控制器中填充它? 这就是我的代码现在的样子。 模型 [Serializable] public class Step1ViewModel : IStepViewModel { public bool MyProperty { get; set; } } [Serializable] public class Step2ViewModel : IStepViewModel { // This needs to be populated with data, I need to display it in a list public List MyList { […]

将计数和数据作为json返回到extjs网格中

我怎样才能返回两个Json对象? 基本上我试图从sql db发送一堆数据和db中的行数。 下面的代码成功发送了myData ,但现在我还要发送count 。 string sqlquery = “SELECT Q1, Q2, Q3, Q4, Improvements, Comments FROM myTable”; conn.Open(); SqlDataAdapter cmd = new SqlDataAdapter(sqlquery, conn); SqlCommand comd = new SqlCommand(sqlquery, conn); DataSet myData = new DataSet(); cmd.Fill(myData, “myTable”); comd.CommandText = “SELECT COUNT(*) FROM myTable”; Int32 count = (Int32)comd.ExecuteScalar(); comd.ExecuteNonQuery(); conn.Close(); return JsonConvert.SerializeObject(myData, Formatting.Indented, new JsonSerializerSettings […]

如何在mvc3中的Controller中访问动态创建的复选框值?

我的视图包含复选框和提交按钮,如下所示。 @using (Html.BeginForm()) { Delete Are you sure you want to delete? @foreach (string resource in resources) { if (resource != “”) { @resource } } @Html.HiddenFor(m => m.AttendeeListString) @Html.HiddenFor(m => m.ResourceListString) } 以下是控制器代码…… public ActionResult DeleteResource(RoomModel roomModel) { … } RoomModel包含一些其他数据…… 现在我如何访问控制器中的复选框值? 注意:当我点击提交按钮时,我有更多需要发送给Controller的信息…任何人都可以建议一些解决方案…. 答案: 我已将这两个属性添加到我的模型中 public List Resources { get; set; } public string[] […]

如何在视图ASP MVC中使用模型数据?

我是ASP MVC的初学者,我正试图在视图中显示模型中的数据。 这是我显示数据的方式: @Html.DisplayFor(modelItem => item.Budget_Year) 但我不知道如何使用这些数据,例如我试图对这个结果进行舍入,我天真地尝试过: @{ double test = (modelItem => item.Budget_Year); test = System.Math.Round(test , 2); } 但我不能这样使用它: 无法将lambda表达式转换为’double’类型,因为它不是委托类型 在我看来,有人可以解释一下如何在我的模型中使用这些不同的项目吗? 最好的祝福, 亚历克斯

从控制器更新DbSet 项的值 – C#,MVC,Code First

这是我的问题:我有一个MVC3 C#应用程序,我需要从编辑控制器更新DbSet中的值,因此T项的值将被替换为新值。 我不想删除该项目并再次添加。 我无法弄清楚如何做到这一点。 DbSet似乎没有像索引那样的东西。 这是我的编辑控制器: public class ItemController : Controller { private SESOContext db = new SESOContext(); private FindQrs fqr = new FindQrs(); [HttpPost] public ActionResult Edit(Item item) { if (ModelState.IsValid) { db.Entry(item).State = EntityState.Modified; Qr qr = fqr.FindQr(item.QR); // update somewhere here db.SaveChanges(); return RedirectToAction(“Index”); } ViewBag.SetID = new SelectList(db.Sets, “SetID”, “Name”, item.SetID); […]

同时访问MVC .NET上的数据

我有一个MVC网站,可以从数据库访问进程列表并选择一个“随机”进程,以便用户可以进行分析。 他可以批准或不批准该过程并自动接收另一个过程。 问题是几个用户将同时执行该过程,我需要阻止那些已经在审核的过程。 我不能在数据库方面这样做,所以必须是一个应用程序解决方案,对用户完全不可见…… 我该如何解决这个问题? —编辑 一种情况是:用户获取进程(进程被锁定),而不是“忘记”打开或“关闭”浏览器。 所以我需要以某种方式解锁这个过程。 我有一些想法: 使用MSMQ(当用户“忘记”完成任务时,是否可以放回进程?) 在我的webapp上使用静态ConcurrentBag来检查id列表。 (IIS回收会杀死该列表吗?) 谢谢

MVC3全球化问题

我正在开发一个带有下一个文化设置的MVC3应用程序: 首先,当我传递一个整数时,我将视图中的值传递给控制器​​,但是当我传递一个double(3.2)时,控制器中的值返回0,如本问题所述 。 好的模型粘合剂添加: protected void Application_Start() { AreaRegistration.RegisterAllAreas(); ModelBinders.Binders.Add(typeof(double), new DoubleModelBinder()); RegisterGlobalFilters(GlobalFilters.Filters); RegisterRoutes(RouteTable.Routes); } public class DoubleModelBinder : IModelBinder { public object BindModel(ControllerContext controllerContext, ModelBindingContext bindingContext) { ValueProviderResult valueResult = bindingContext.ValueProvider .GetValue(bindingContext.ModelName); ModelState modelState = new ModelState { Value = valueResult }; object actualValue = null; try { actualValue = Convert.ToDouble(valueResult.AttemptedValue, CultureInfo.InvariantCulture); } catch […]