Tag: asp.net mvc 3

如何防止EFvalidation在DBContext.SaveChanges()期间未映射的属性

我有一个用户模型,其中包含两个[NotMapped]字符串属性Password和ConfirmPassword。 这些是未映射的,因为我将密码保存为字节数组(在salting之后),因此在用户模型中有两个额外的属性(映射)InternalPassword和Salt。 问题是当我使用用户模型更改密码时,entity framework抛出DBEntityValidation错误,指出“需要密码属性”。 我在这里理解的是EF在保存之前尝试validation我的模型,并且由于未设置Password / ConfirmPassword,因此抛出此错误。 这提出了以下问题: 1)如果属性密码被明确地设为[NotMapped],为什么EF在保存期间validation它? 2)如果EF在保存期间执行validation,并且在绑定期间也执行相同的操作(控制器操作方法中的IE),它是否会影响性能? (validation两次)3)解决此错误的推荐方法是什么? (如果我将Password属性显式设置为虚拟值,则错误消失。) 编辑:我删除了代码,因为它很长,可能是没有答案的原因。 如果有人想看看,我可以在下面附上。

无法使用vb.net加载asp.net mvc 3中的区域视图

我有最新版本的VS 2010,.NET 4.0和MVC 3,使用vb.net时我在使用asp.net mvc 3中的区域时遇到问题。 我做了以下事情: 创建一个新的visual basic asp.net mvc 3项目。 选择Razor作为“View Engin”并调用项目“TestApp”。 创建一个名为“Test”的新区域,它将位于以下文件夹中:/ Areas / Test。 在/ Areas / Test / Controllers /“中添加一个名为”PageController.vb“的新空控制器。 在/ Areas / Test / Views /中添加一个名为“Page”的新文件夹。 在/ Areas / Test / Views / Page中添加一个名为“Index.vbhtml”的新空视图。 运行该项目。 在浏览器中手动键入URL“http:// localhost:xyz / Test / Page”,其中xyz是由VS生成的自动添加的端口号。 在步骤7,我收到消息“无法找到资源”。 如果我使用c#执行完全相同的操作,那么我将进入正确的页面,它将按预期显示“Index”一词。 这是一个错误,还是我错过了什么? 我一直在扫描网络几个小时试图解决这个问题,但我现在正在接受。 这是自动创建的TestAreaRegistration.vb文件命名空间TestApp.Areas.Test公共类TestAreaRegistrationinheritanceAreaRegistration Public Overrides ReadOnly […]

为什么我的ITexthandler不工作? 我正在尝试将XML解析为ITextSharp doc

我正在使用Visual Developer 2010,MVC 3,c#。 我正在尝试将XML解析为这样的iTextSharp文档: ITextHandler textHandler = new ITextHandler(doc); textHandler.Parse(xmldoc); 错误消息显示ITextHandler不在此上下文中。 我怎样才能做到这一点? 或者是否有另一个构造函数将执行相同的操作? 这是我的using语句列表: using System; using System.IO; using System.Text; using System.Web; using System.Web.Mvc; using System.Xml; using iTextSharp.text; using iTextSharp.text.xml; using iTextSharp.text.pdf; 除了ITextHandler行之外,其他所有内容似乎都可以正确编译。 请帮忙。

我应该永远不会调用HostingEnvironment.UnregisterObject吗?

在尝试在我的ASP.Net MVC 3应用程序中通过smtp实现异步电子邮件时,我遇到了阻止我的ASP.NET MVC请求线程的SO SmtpClient.SendAsync 。 在那里我找到了Phil Haack的文章: 在ASP.NET中实现重复背景任务的危险,它提供了一种避免在AppDomain关闭时崩溃后台线程的方法。 文章说要调用HostingEnvironment.RegisterObject(this); 在构造函数上并调用HostingEnvironment.UnregisterObject(this); 仅在调用IRegisteredObject.Stop方法时 。 在一般情况下,当请求永久到达,并且实现IRegisteredObject的对象的范围是请求时,这种方法是不是在每个请求中注册对象(利用电子邮件function)并且不注销任何? 可以吗? 或者我应该在异步操作完成后取消注册? PS:正如Damian Edwards在链接的SO问题中所建议的,我使用ThreadPool.QueueUserWorkItem来发送超出请求范围的电子邮件。

在ASP.NET MVC3中正确使用TempData?

我有一个ASP.NET MVC3应用程序,其中我的动作生成一个id列表,我想让它可用于后续的AJAX请求。 这样我就可以在后台运行一个漫长的过程并对其进行轮询。 id列表是这个长时间运行过程的必要输入。 我不想在URL中将它们作为参数传递,因为列表可能会很长并导致IE中出现问题。 我的控制器 public ActionResult Run() { List objs = _db.MyObjs.ToList(); string uniqueId = Guid.NewGuid().ToString(); ViewData[“UniqueID”] = uniqueId; TempData[“ObjIdList” + uniqueId] = String.Join(“,”, objs .Select(o => o.ObjID).ToArray()); return View(objs); } public void StartProcess(string uid) { string ids = TempData[“ObjIdList” + id].ToString().Split(‘,’); … } 我的看法 var uniqueId = ‘@ViewData[“UniqueID”]’; $(document).ready(function (event) { $(‘#startProcess’).click(function […]

为什么我找不到RadioButtonFor方法?

这是我的静态类: using System; using System.Collections.Generic; using System.Linq; using System.Web.Mvc; using System.Linq.Expressions; using System.Text; using System.Web; namespace Foo.WebUI.Infrastructure { public static class HtmlHelpers { public static MvcHtmlString Image(this HtmlHelper helper, string src, string altText) { var builder = new TagBuilder(“img”); builder.MergeAttribute(“src”, src); builder.MergeAttribute(“alt”, altText); return MvcHtmlString.Create(builder.ToString(TagRenderMode.SelfClosing)); } public static MvcHtmlString RadioButtonForEnum(this HtmlHelper htmlHelper, Expression<Func> expression) { […]

类型可以为空时,不调用自定义模型绑定器

我有一个名为TimeOfDay的自定义结构,它在这样的视图模型中使用: public class MyViewModel { public TimeOfDay TimeOfDay { get; set; } } 我创建了一个名为TimeOfDayModelBinder的自定义模型绑定器,并将其注册在Global.asax.cs中,如下所示: ModelBinders.Binders.Add(typeof(TimeOfDay), new TimeOfDayModelBinder()); 一切都很好。 但是,如果我将我的视图模型更改为: public class MyViewModel { public TimeOfDay? TimeOfDay { get; set; } // Now nullable! } 我的自定义模型绑定器不再被调用。 我知道该属性不再是TimeOfDay的类型,而是一个不同的Nullable。 这是否意味着我应该在Global.asax.cs中添加我的自定义模型绑定器两次,如下所示: ModelBinders.Binders.Add(typeof(TimeOfDay), new TimeOfDayModelBinder()); ModelBinders.Binders.Add(typeof(TimeOfDay?), new TimeOfDayModelBinder()); 它有效,但有一些我不喜欢的东西。 这是否真的有必要将我的类型处理为可空,或者是否有我遗漏的东西?

在View中创建HiddenFor IEnumerable

我有一个IEnumerable属性 public IEnumerable ChangesOthersResult { get; set; } 我需要从ChangesOthersResult收集所有值并从视图发回到控制器。 我如何遍历Ienumerable并创建将绑定回控制器中的ViewModel的隐藏字段? foreach(var item in Model.ChangesOthersResult) { @Html.HiddenFor(x => x.ChangesOthersResult); } 给我Raw SQL语句作为文本。

无法加载文件或程序集“SharpSvn”或其依赖项之一。 尝试加载格式不正确的程序

我刚刚下载了64位版本的SharpSVN 链接 ! 当我运行我的应用程序时,显示错误消息。 我已经在网上搜索了如何解决这个问题,但我失败了。 我尝试了以下解决方案: 按照本文中的建议将Configuration Manager设置为x64 在此响应上设置启动配置 还尝试下载x86并将配置管理器设置为x86。 尝试了这一点,添加组装链接 我正在使用Win7,64bit,.net 4.0。

确定ASP.NET MVC 3中的请求是否为PartialView或AJAX请求

我必须为网站用户提供访问权限。 我在这里做过滤: protected override void OnActionExecuting(ActionExecutingContext filterContext) { } 问题是我无法区分完整的View请求,例如’Index’与PartialViewRequests或AJAX调用请求。 因此页面’Index’具有访问权限,但’PartialViewGridViewForIndex’没有访问权限。 属性ControllerContext.IsChildAction也没有帮助。