Tag: asp.net mvc 4

将json对象发布到ASP MVC无法正常工作

我正在尝试将自定义Json对象发布到ASP.NET MVC控制器,但无法正常工作。 我的JS代码是: var myData = { “Message”: “Another message”, “Value”: 4, “FirstItem”: { “ItemName”: “Este es el primer Item” }, “SecondItem”: { “ItemName”: “Este es el segundo Item” } }; $(‘.clickeable’).click(function () { $.ajax({ type: ‘POST’, dataType: ‘json’, data: myData, url: ‘@Url.Action(“PostSomething”)’, success: function () { console.info(‘Success’); }, error: function () { console.info(‘Error’); } […]

ASP.NET Autofac Singleton运行两次构造函数注入

我不确定我的期望是否错误。 我使用的是ASP.NET MVC(非核心)和Autofac。 我有一个图像出现在我的网站的每个页面上,我已经创建了一个服务来返回一个像这样的随机图像名称 接口 public interface IBreadCrumbImage { string GetImage(); } CLASS(为简洁起见) public class BreadCrumbImage : IBreadCrumbImage { public string GetImage() { return ImageUrl; } } GLOBAL.ASAX.CS(Autofac注册) protected void Application_Start() { var builder = new ContainerBuilder(); builder.RegisterControllers(typeof(MvcApplication).Assembly); builder.RegisterType().As().SingleInstance(); var container = builder.Build(); DependencyResolver.SetResolver(new AutofacDependencyResolver(container)); } CONTROLLER public class HomeController : Controller { private IBreadCrumbImage […]

如何在asp.net mvc中处理未观察到的exception

我特别询问如何处理未观察到的exception,而不是未处理的exception。 这个问题也与这个问题不同, 这个问题是关于如何引发即发即弃异步方法,而不是如何处理未观察到的exception,尽管它们是相关的。 未观察到的exception是由下面显示的示例引起的类型,取自此处 : Task op1 = FooAsync(); Task op2 = BarAsync(); await op1; await op2; 作为一项规则,我试图避免这种情况,但如果它发生,我不希望我的网站意外退出,我不希望这些例外被静默吞下。 我至少想在一个地方处理它们并记录它们。 我不想用elmah。 现在,我认为我们可以从这里做类似这样的例子: TaskScheduler.UnobservedTaskException += (sender, e) => { Console.WriteLine(“Saving the day! This exception would have been unobserved: {0}”, e.Exception); e.SetObserved(); }; 但是,我的问题是: – 把它放在哪里,它可以进入Application_Start()吗? 这些未观察到的exception是否会进入Application_Error()? 如果是这样,您如何识别它们或阻止它们在Application_Error中出现。 这个问题很相似,但没有令人满意的答案/解释。

MVC 4:自定义路由和Html.Action不同步

所以我有这个自定义路由,它根据URL中的区域性设置路由表,但是当我调用Url.Action(…)时,它不会生成本地化的URL。 我有什么想法我做错了吗? 文化正在改变页面,我能够确定用户选择了哪种语言,但Url.Action没有生成本地化的URL。 这是自定义路由,它会更改路由表值(不确定是否采用这种标准方式): public class CultureRoute : Route { public CultureRoute(string url, object defaults, object contraints) : base(url, new MvcRouteHandler()) { base.Defaults = CreateRouteValueDictionary(defaults); base.Constraints = CreateRouteValueDictionary(contraints); } public override RouteData GetRouteData(HttpContextBase httpContext) { var routeData = base.GetRouteData(httpContext); if (routeData != null) { var culture = routeData.Values[“culture”].ToString(); var cookie = httpContext.Request.Cookies[“culture”]; var areEqual = […]

枚举有多个描述

我有这样的枚举。 public enum Gender { Man = 1, Woman = 2 } 我使用ASP MVC4来显示这样的下拉选项。 @Html.DropDownListFor(model => model.Gender, new SelectList(Enum.GetValues(typeof(Namespace.Models.Enum.Gender)))) 这就像一个魅力,它显示了男人/女人的下拉。 我的问题是,我希望在不同的上下文中显示不同的名称。 如果你是一个妈妈或一个爸爸,就像一个背景。 我想使用性别enum作为基础,但显示男/女的妈妈/爸爸instad。 另一个背景是男孩/女孩,我仍然想使用性别枚举,但显示不同的文字。 这有可能吗? 编辑我使用凯文的解决方案,并添加了另一种这样的扩展方法。 public static List<KeyValuePair> GetValues(IGenderStrategy genderStrategy) { Dictionary arr = new Dictionary(); foreach (Gender g in System.Enum.GetValues(typeof(Gender))) arr.Add(g.ToValue(genderStrategy), (int)g); return arr.ToList(); } 在我看来,我用过这个。 @Html.DropDownListFor(model => model.Gender, new SelectList(Chores.Models.Enum.EnumExtentions.GetValues(new Chores.Models.Enum.ParentStrategy()), “value”, […]

在MVC中,可以更改@ Html.DropDownListFor中每个列表项的字体(创建类似于MS office的字体下拉列表

在MVC 4中,我有类似下面的代码, @for (int i = 0; i < Model.dropDownControl.Count; i++) { @List fonts = (List)ViewBag.vFontlIst; @Html.DropDownListFor( model => model.dropDownControl[i].Font, fonts, new { style = “width: 100px; font-family:”+Model.dropDownControl[i].Font+””, id = “ddlFontDropDownList” }) } 在这里我尝试创建类似于我们在MS Office中用于字体选择的下拉列表,在上面的代码下拉字体样式对于完整列表总是相同的,这里selectlist包含所有可用字体控制器的列表,其具有以下代码: List liFonts = new List(); foreach (FontFamily font in System.Drawing.FontFamily.Families) { liFonts.Add(new SelectListItem { Text = font.Name, Value = font.Name […]

使用angularJS和asp.net mvc下载文件

我是使用asp.net mvc开发的初学者。 我正在尝试下载文件(图片,pdf ..)这是我的代码 在asp控制器中 [HttpPost] public HttpResponseMessage Download(int id) { var db = new TutorialGEDEntities(); Tutorial fileToDownload = db.Tutorials.Find(id); string name = fileToDownload.filepath; Debug.WriteLine(“filepath ” + name); try { if (!string.IsNullOrEmpty(name)) { //var root = System.Web.HttpContext.Current.Server.MapPath(name); var filePath = System.Web.HttpContext.Current.Server.MapPath(name); ; char[] s = new char[name.Length – name.LastIndexOf(“\\”) – 1]; name.CopyTo(name.LastIndexOf(“\\”)+1, s, 0, name.Length […]

MVC 4 / Entity Framework中的自定义查询?

我目前有一个使用ASP.net MVC 4和entity framework构建的工作CRUD应用程序。 我对表使用EDMX模型,这些模型部署在实时服务器上的数据库中。 我想知道如何查询控制器中的表以返回一个视图,该视图包含来自每个表(连接)的列,作为一个表,基于从查询字符串返回的列标题 这些是我的表,我在他们各自的模型中为他们设置了getter和setter,模型是“Model1.edmx” AccCompany AccControl ID ID Code ControlCode CompanyID Nominal AccountsCompany CostCentre Company Department 我只是不明白如何使用自定义方法连接表,作为MVC框架。 EF似乎自己做了一切 – 就实际查询而言……

如何在将C#字符串传递给javascript时优雅地转义单引号和双引号

我有一个C#字符串需要传递给页面然后发送回服务器。 它需要能够处理单引号,双引号和可能导致问题的任何其他标准字符。 我正在使用MVC4和razor。 现在我将字符串传递给javascript。 我有这样的事情: var str = ‘@Html.Raw(Model.SomeString.Replace(“‘”, @”\'”))’; 这很好用,但我想知道是否有更好,更优雅的方式来转义将传递给javascript的C#字符串。 我已经尝试将值存储在隐藏字段中,如下所示: @Html.Hidden(x => x.SomeString) 但是当我去抓取价值时,它会出现双引号问题。 编辑:结果是Html.Hidden问题是由其他东西引起的 任何帮助是极大的赞赏! 注意:必须在IE9和10中工作。没有ViewBags。

通过向导方法填充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 { […]