Tag: asp.net mvc 4

Facebook网络应用程序扩展权限第二步不显示

Update2这篇文章已经老了但仍然相关..下面是我解决它的方式。 我标记了其他人回答,因为我认为它更好地回答了这个问题。 我在accountcontroller中调用了一个类似的方法(我将要重构:))。 字符串应该是一个列表…我想你明白了。 /// /// Use this method when an action fails due to lack of priviligies. It will redirect user to facebook with provided permission request. /// Refactor to handle list of request. /// /// private static void AddAdditionalPermissions(string permission) { System.Diagnostics.Trace.TraceInformation(permission + ” not authorized for user.”); string facebook_urlAuthorize_base = “https://graph.facebook.com/oauth/authorize”; string […]

在web api中传递Dictionary 参数

我正在尝试将Dictionary对象作为参数传递给我的web api方法,但如果我检查日志文件,它总是会计数为0: Web api方法: [HttpPost] [ActionName(“SendPost”)] public void SendPost([FromBody] Dictionary values) { using (var sw = new StreamWriter(“F:\\PostTest.txt”, true)) { sw.WriteLine(“Number of items in the dictionary – ” + values.Count); } } 调用web api的逻辑: public HttpResponseMessage Send(string uri, string value) { HttpResponseMessage responseMessage = null; using (var client = new HttpClient()) { client.BaseAddress = new […]

来自1 List 的MVC Multiple DropDownLists

背景:我的页面上有4个下拉列表,它们都使用一个SelectListItem列表来从中提取数据。 所有这4个下拉列表中的所有4个都将具有相同的元素。 每个下拉列表顶部都有一个空元素。 问题:如果我没有从列表中选择呈现第二个的项目,则当页面加载时,第二个列表会自动选择在第一个列表中选择的项目。 这是因为(我认为)列表有一个SelectListItem ,其中Selected = true ,它只是在第二个列表中使用那个。 有没有办法为多个下拉列表使用一个列表源? 我不想重复这个清单4次,除非我绝对要…… 代码 : //this is the list source public IEnumerable PossibleItems { get; set; } //this is the code on my .cshtml page @Html.DropDownListFor(x => x.SelectedItem1, Model.PossibleItems) @Html.DropDownListFor(x => x.SelectedItem2, Model.PossibleItems) @Html.DropDownListFor(x => x.SelectedItem3, Model.PossibleItems) @Html.DropDownListFor(x => x.SelectedItem4, Model.PossibleItems)

在编辑器模板中迭代集合时,NameFor会生成错误的名称

假设我有一个类型为集合的视图,例如List : @model List @for(int i = 0; i m[i].Foo) @Html.EditorFor(m => m[i].Bar) } Foo和Bar只是字符串属性。 这将生成[i].Foo和[i].Barforms的HTML名称属性,当然,这些属性是正确的,并且在表单中发布时可以正确绑定。 现在假设上面的视图是一个编辑器模板,它是这样呈现的(其中Model.Items是List ): @model WrappingViewModel @Html.EditorFor(m => m.Items) 突然之间,编辑器模板中生成的名称的forms – 例如 – Items.[i].Foo 。 默认模型绑定器不能绑定它,因为它需要表单Items[i].Foo 。 这在第一个场景中运行良好 – 视图不是编辑器模板 – 并且在集合是属性的情况下也可以正常工作,而不是整个模型: @Html.EditorFor(m => m.Items[i].Foo) 它仅在模型本身是集合且视图是编辑器模板时失败。 有几种方法可以解决这个问题,其中没有一个是理想的: 将编辑器模板键入到ItemViewModel的单个实例中 – 这不好,因为相关的实际模板包含用于添加到集合中/从集合中删除的附加标记。 我需要能够使用模板中的整个集合。 将List包装在另一个属性中(例如通过实现ItemListViewModel )并将其传递给模板 – 这也不是理想的,因为这是一个企业应用程序,我宁愿不会因多余的包装视图模型而混乱。 手动生成内部编辑器模板的标记以生成正确的名称 – 这是我目前正在做的但我宁愿避免它,因为我失去了HtmlHelpers的灵活性。 所以,问题是:为什么NameFor (以及因此EditorFor )在这种特殊情况下表现出这种行为,当它适用于轻微变化时(即它是有意的,如果是,为什么)? […]

是否可以在MVC 4 AuthorizeAttribute中使用async / await?

我在MVC的AuthorizeAttribute上看到的唯一覆盖是public override void OnAuthorization( AuthorizationContext filterContext ) ,它不适合与async / await一起使用,因为它不返回Task 。 是否有另一种方法可以在MVC中创建允许使用async / await的AuthorizeAttribute ?

在SSO身份validation后设置FormsAuthentication

我的ASP.NET MVC 4应用程序受SSO(OAM)保护,并在IIS上运行ISAPI筛选器。 收到对我的应用程序的请求后,它将被ISAPIfilter拦截并重定向到SSO。 用户必须在SSO登录,然后返回我的应用程序。 经过身份validation的用户的用户名(通过SSO)与我在HTTP请求标头中的应用程序共享。 Request.Headers[“username”] 我想要实现的是 – 在SSO身份validation之后,在我的应用程序中为username = Request.Headers[“username”]设置FormsAuthentication 。 这样,SSO对我的应用程序保持透明,并且HttpContext对象中提供了用户身份,此外,我(开发人员)可以有效地为特定角色使用Authorize属性。 要实现这一点 – 我连接到Session_Start() ,读取Request.Headers[“username”] ,设置FormsAuthentication cookie。 我为我的应用程序获得了这个SSO用户Forms-Authenticated。 但我的问题是当我注销( FormsAuthentication.Signout )时,我将其重定向到应用程序内的另一个页面,这会触发一个新的Session(我发现会发生Session_Start触发) 我做了正确的事 – 在SSO之后的FormsAuthentication吗? 如果没有,为什么不然后如何让我的应用程序知道SSO认证用户?

从cshtml页面重定向

我想根据数据集的结果重定向到不同的视图,但我不断返回到我当前所在的页面,并且无法解决原因。 我进入if语句调用操作但是一旦我将视图返回到新页面,它就会将我返回到当前页面。 CSHTML页面 @{ ViewBag.Title = “Search Results”; EnumerableRowCollection custs = ViewBag.Customers; bool anyRows = custs.Any(); if(anyRows == false) { Html.Action(“NoResults”,”Home”); } // redirect to no search results view } 调节器 public ActionResult NoResults() { return View(“NoResults”); } 查看我也无法得到.. @{ ViewBag.Title = “NoResults”; } NoResults

Autofac属性注入在属性上失败

我已经找到了一些问题,但是他们倾向于指出我正在遵循的确切文档……但它仍然没有用。 我正在构建一个相当简单的ASP.NET MVC 4站点,计划是使用基于ActionFilterAttribute的日志记录。 我有一个DataAccessProvider类,它打开与数据库的事务并提供工作单元实例,我试图将它注入filter属性。 文档说只需调用RegisterFilterProvider()就足够了,并确保注册相关类型。 它特别说没有必要注册属性,但我已经尝试了有无。 我的代码目前看起来像这样: var builder = new ContainerBuilder(); builder.RegisterControllers(Assembly.GetExecutingAssembly()); builder.Register(x => new EntityAccessProvider()) .As() .InstancePerHttpRequest(); builder.RegisterType().PropertiesAutowired(); // ^ I’ve tried it with and without this line builder.RegisterFilterProvider(); var container = builder.Build(); DependencyResolver.SetResolver(new AutofacDependencyResolver(container)); 然后,文档中的示例只是在filter上放置一个属性,所以我做了同样的事情: public class DebugLogAttribute : ActionFilterAttribute { private IDataAccessProvider DataAccess { get; set; } public override void […]

Razor部分可以选择吗?

如果我有一个页面: @section SomeStuff { This is a section I just addered } 布局是否有可能不呈现此部分,或者与概念上的工作方式相反。 似乎能够不在页面上呈现某些部分是有用的(除非我正在考虑这个错误)。 编辑: 包含错误消息可能会有所帮助,当我将一个部分放入主页面时, 布局页面将失败: The following sections have been defined but have not been rendered for the layout page “/Views/Layouts/_Layout1.cshtml”: “SomeStuff”. 好像它迫使我渲染页面上的每个部分或其他东西。 换句话说,在Layout.cshtml中,我不调用@RenderSection,但在Index.html中我有一个名为SomeStuff的部分已定义。 这合法吗? 好像它迫使我渲染页面中的所有部分,但似乎部分应该是可选的,不是吗?

使用模型在mvc 4中根据出生日期validation年龄

我有登记表,其中包含出生日期。 使用日历日期选择器,它输入该字段的值。 这些是为此字段插入值的步骤 步骤1 第2步 第3步 所以它采用dd / MM / yyyy格式的值 这是我的模型类 中出生日期字段的外观 [DisplayName(“Date of Birth”)] [DataType(DataType.Date), DisplayFormat(DataFormatString = “{0:dd/MM/yyyy}”, ApplyFormatInEditMode = true)] public Nullable Date_of_Birth { get; set; } 这是我视图文件 中出生日期字段的外观 @Html.LabelFor(model => model.Date_of_Birth) @Html.Label(“*”, new { id=”star” , @class = “requiredFiledCol” }) @Html.TextBoxFor(model => model.Date_of_Birth, “{0:dd/MM/yyyy}”, new { @class = “form-control datepicker”, placeholder […]