Articles of asp.net mvc

MVC5的嵌套布局

我在这个主题上看了几篇post: Razor嵌套布局与层叠部分 MVC 3 – 嵌套布局 – 部分不在区域中渲染 它似乎总是有问题的。 然而,他们都很老了,所以想知道事情是否已经改变。 基本上我有一个主布局,以及3种不同的主体模板,基于它是什么类型的页面。 例如: _Layout.cshtml @Html.Partial(“_MenuPartial”) @RenderSection(“breadcrumbs”, true); @RenderBody(); @Html.Partial(“_FooterPartial”) @Html.Partial(“_ScriptInitPartial”) _LayoutForEdit.cshtml @RenderSection(“tabs”, true) @RenderBody() Save 现在,这在调用时渲染得很好。 几乎。 部分的呈现必须在它看起来的子布局中。 如果我尝试将面包屑放在_Layout.cshtml ,它将失败,因为_LayoutForEdit.cshtml从未呈现它。 我怎样才能解决这个问题? The following sections have been defined but have not been rendered for the layout page “~/Views/Shared/_LayoutForEdit.cshtml”: “breadcrumbs”.

对所有控制器操作强制执行操作筛选(C#/ ASP.NET MVC)

我创建了一个新的动作filter(属性,类似于[Authorize]),它根据会话值授权访问控制器动作。 但是,我基本上用该属性装饰我的所有控制器动作(除了极少数)。 所以,我认为除了在将[ExemptFromAuthorize]属性附加到控制器动作的情况下, 总是执行Action Filter会更好吗? (也许通过inheritance我自己的Controller类?) 我怎样才能做到这一点?

MVC 4 Autofac和Generic Repository模式

我正在使用我的MVC 4应用程序中的工作单元和通用存储库模式。 我试图解决的问题是为我系统中的每个实体创建Repository存根。 为了利用Autofac Ioc,我必须为每个实体创建一个存储库类和接口,以便我可以在Autofac中注册它。 应用开始…… builder.RegisterType().As().InstancePerHttpRequest(); 存储库类 public class SchoolDetailRepository : RepositoryBase, ISchoolDetailRepository { public SchoolDetailRepository(IDatabaseFactory databaseFactory) : base(databaseFactory) { } } 接口 public interface ISchoolDetailRepository : IRepository { } 这似乎是一项额外的工作。 有没有办法注册Type的通用存储库而不是创建所有这些空类? 然后在我的服务类中,我可以通过Ioc将通用类型传递给构造函数,例如… public class SchoolService : ISchoolService { private readonly IRepository _schoolRepository; private readonly IUnitOfWork _unitOfWork; public SchoolService(IRepository schoolRepository, IUnitOfWork unitOfWork) { this._schoolRepository […]

在ASP.net MVC单页面应用程序中删除身份validation

我试图在visual studio 2013中使用asp.net MVC SPA模板,我不需要任何身份validation位,我只需要直接加载到其中一个控制器页面上。 如何从初始模板中删除所有身份validation内容?

Azure网络应用程序突然不再支持文化

出乎意料的是,我们的Azure网络应用程序正在喷出有关不受支持的文化的错误。 我们会在首页上显示要显示的国家/地区列表,但这会突然出错。 在其他各种Web应用程序上也使用相同的代码,并且它们没有问题。 以下代码给出了一个问题。 private List Countries() { RegionInfo country = new RegionInfo(new CultureInfo(“nl-BE”, false).LCID); List countryNames = new List(); foreach (CultureInfo cul in CultureInfo.GetCultures(CultureTypes.SpecificCultures)) { country = new RegionInfo(new CultureInfo(cul.Name, false).LCID); countryNames.Add(new SelectListItem() { Text = country.DisplayName, Value = country.DisplayName }); } return countryNames.GroupBy(x => x.Text).Select(x => x.FirstOrDefault()).ToList().OrderBy(x => x.Text).ToList(); } 我在for-each中放置了一个try-catch,因此我可以查明出错的文化。 以下文化突然返回错误: 4096 […]

我可以使用内容协商将视图返回到ASP.NET核心中的浏览器和JSON到API调用吗?

我有一个非常基本的控制器方法,它返回一个客户列表。 我希望它在用户浏览时返回列表视图,并将JSON返回给Accept标头中具有application/json请求。 这可能在ASP.NET Core MVC 1.0中吗? 我试过这个: [HttpGet(“”)] public async Task List(int page = 1, int count = 20) { var customers = await _customerService.GetCustomers(page, count); return Ok(customers.Select(c => new { c.Id, c.Name })); } 但是,默认情况下返回JSON,即使它不在Accept列表中。 如果我在浏览器中点击“/ customers”,我会得到JSON输出,而不是我的视图。 我想我可能需要编写一个处理text/html的OutputFormatter,但我无法弄清楚如何从OutputFormatter调用View()方法,因为那些方法在Controller ,我需要知道我要渲染的视图的名称。 有没有我可以调用的方法或属性来检查MVC是否能够找到要呈现的OutputFormatter ? 类似于以下内容: [HttpGet(“”)] public async Task List(int page = 1, int count = 20) […]

如何处理System.Data.Entity.Validation.DbEntityValidationException?

我的应用程序收到以下错误: EntityFramework.dll中出现“System.Data.Entity.Validation.DbEntityValidationException”类型的exception,但未在用户代码中处理 附加信息:一个或多个实体的validation失败。 有关详细信息,请参阅“EntityValidationErrors”属性。 尝试注册新用户时出现此错误。 ‘db.SaveChanges()’发生错误 这是代码: public ActionResult Registration(x.Models.User user) { if(ModelState.IsValid) { using(var db = new xDBEntities1()) { var crypto = new SimpleCrypto.PBKDF2(); var encrpPass = crypto.Compute(user.password); var sysUser = db.users.Create(); sysUser.email = user.email; sysUser.username = user.username; sysUser.password = encrpPass; sysUser.premium_credits = 0; sysUser.login_times = 0; sysUser.last_ip = Request.ServerVariables[“REMOTE_ADDR”]; sysUser.creation_ip = Request.ServerVariables[“REMOTE_ADDR”]; sysUser.banned […]

ASP.NET MVC 2 – Html.Editor对于可以为空的类型?

我有两个编辑器模板:一个用于十进制,一个用于十进制? (可为空的) 但是当我的模型中有一个可以为空的小数时,它会尝试加载普通的十进制编辑器: model.SomeDecimal )%> model.SomeNullableDecimal )%> 第一个工作正常,并加载十进制编辑器模板。 第二个也尝试加载十进制模板(并且因为它不是十进制字段而失败)。 错误消息是: The model item passed into the dictionary is null, but this dictionary requires a non-null model item of type ‘System.Decimal’. 我的模板声明如下: 十进制模板: <%@ Control Language="C#" Inherits="System.Web.Mvc.ViewUserControl” %> 可空的十进制模板: <%@ Control Language="C#" Inherits="System.Web.Mvc.ViewUserControl” %> 我知道我可以通过传递模板名称来使其工作,例如 但我真的更喜欢它只是像所有其他模板一样使用类型自动工作。 model.SomeNullableDecimal, “NullableDecimalTemplate” )%>

如何使用AJAX和MVC实现文件下载

我想通过在MVC下使用jQuery AJAX调用和一些参数来提供文件下载操作 例 (javascript) function DoDownload(startDate) { $.ajax({ url:”controller/GetFile/”, data: {startDate:startDate} … }); } C# Controller Code public void GetFile(string startDate) { var results = doQuearyWith(startDate); // Create file based on results …. // HOw do I tell the server to make this a file download?? } 我通常会让我的文件下载一个链接,如: Download 但在上面的情况下,日期将是动态的。 如果我不使用ajax,那么使用javascript将params传递给MVC控制器的首选方法是什么? 例: window.location = “mycontroller/GetFile/” […]

ASP.NET MVC 3 WebGrid分页问题

我的数据访问层返回带有单页行数和总行数的集合。 遗憾的是,WebGrid组件不允许指定总行数或总页数(这些属性是只读的)。 以前有人不得不处理这个问题吗?