Tag: asp.net mvc 3

如何将Razor视图转换为字符串?

我想将我的Razor视图用作发送电子邮件的某种模板,因此我想在视图中“保存”我的模板,将其作为字符串读入控制器,执行一些必要的替换,然后发送它。 我的解决方案有效:我的模板作为HTML页面托管在某处,但我想把它放到我的应用程序中(即在我的视图中)。 我不知道如何在我的控制器中读取视图作为字符串。

ASP.NET MVC全局error handling

我有一个自定义HandleError属性来处理MVC管道上的错误; 我的Global.asax上有一个protected void Application_Error(object sender, EventArgs e)方法,它处理来自管道外部的错误。 我遇到过一个我不知道可能的情景; 在实现DI时,对于connectionString有一个依赖connectionString ,它取自应用程序配置文件。 由于连接字符串尚不存在,因此在创建控制器时会出现错误,这通常会使Application_Error处理程序触发,并呈现正确的错误页面(通过将部分视图呈现为字符串并将其作为响应发送,并在如果失败,只需将“致命exception”写入响应。 除了在这种情况下,我得到了虚假的默认ASP.NET“运行时错误”黄色死亡屏幕。 告诉我: 运行时错误 说明:服务器上发生应用程序错误。 此应用程序的当前自定义错误设置可防止查看应用程序错误的详细信息。 详细信息:要在本地服务器计算机上查看此特定错误消息的详细信息,请在位于当前Web应用程序根目录中的“web.config”配置文件中创建标记。 然后,此标记应将其“mode”属性设置为“RemoteOnly”。 要使详细信息可在远程计算机上查看,请将“mode”设置为“Off”。 我的customErrors中没有设置defaultRedirect ,也没有Off ,因为我不想重定向,而是在用户所在的同一页面上呈现错误,避免了不必要的重定向。 我该如何处理这样的场景? 甚至是什么原因导致它以这种方式运行而不像控制器之外的任何其他错误? 我意识到它不太可能经常发生,但我希望能够阻止YSOD(部分原因是因为我想隐藏我正在使用的技术,但主要是因为它不是很漂亮,也不是用户友好的) 我甚至尝试为UnhandledExceptions注册一个处理程序,但它也没有触发。 AppDomain.CurrentDomain.UnhandledException += CurrentDomain_UnhandledException; 最终产生这个的代码是: return ConfigurationManager.ConnectionStrings[key].ConnectionString; ,其中ConnectionStrings[key]为null 。 更新 这是应用程序错误的处理方式: protected void Application_Error(object sender, EventArgs e) { this.HandleApplicationError(new ResourceController()); } public static void HandleApplicationError(this HttpApplication application, BaseController controller) { […]

entity framework迁移 – 启用AutoMigrations以及添加的迁移

我正在我的项目中使用Entity Framework 4.3 Migrations。 我想使用自动迁移,这样当我修改我的域对象和我的上下文类时,我的数据库会在运行项目时自动更新。 到目前为止,我有这个工作。 除了自动迁移之外,我还想使用一些添加的迁移,我希望应用程序在运行应用程序时自动跳转到最新版本(基于我添加的迁移)。 为了做到这一点,我把它放在global.asax文件中…… Database.SetInitializer(new MigrateDatabaseToLatestVersion()); 现在这样可行,但是当我这样做时,它不再根据我的域对象自动更新数据库。 我希望能够完全删除数据库,然后运行应用程序并运行所有自动迁移,然后运行我的显式迁移并将数据库升级到最新版本。 我知道我已经在之前的项目中使用了这个,但我不确定在这种情况下我做错了什么。 谢谢

为mvc3 webapplication自动生成规范

我想在我的网站上使用规范url。 我在互联网上阅读了一些关于它的内容,但我正在寻找一种解决方案,它将自动为我的运行时生成规范并将其添加到返回浏览器的html代码中。 我已经在互联网上找到了一个使用属性的例子,但这不是我想要的。 使用属性我还在决定哪个页面应该是规范或不是我自己,我希望每个页面都有一个自动生成的页面。 我认为应该有(现有的)解决方案吗? 我正在努力寻找一个好的榜样,所以任何帮助都会受到赞赏。

MVC 3模型validation问题 – 监督或设计

我遇到了一个场景,我需要知道当前在自定义ValidationAttribute validation了哪个属性 。 我认为这很容易在MVC 3中,因为ValidationContext被传递到IsValid方法。 没有详细说明,这是基本的想法: protected override ValidationResult IsValid(Object value, ValidationContext validationContext) { if (ShouldICareAboutYou(validationContext.MemberName)) { //Do some stuff } //Return the results } 这似乎是完美的解决方案,事实上,当使用Validator.TryValidateObject对我的自定义ValidationAttribute进行unit testing时,一切都运行得非常好! 然而… 在我的控制器中调用TryUpdateModel或TryValidateModel ,validation会运行,但ValidationContext.MemberName为null。 哇啊?!? 我做了一点调查,果然, DataAnnotationsModelValidator内部就是代码……或缺乏代码。 public override IEnumerable Validate(object container) { // Per the WCF RIA Services team, instance can never be null (if you have // […]

如何在mvc控制器中创建确认框?

我需要在mvc控制器中创建确认框? 使用’yes’或’no’值我需要在我的控制器中执行操作。 我们怎么做? 示例代码: public ActionResult ActionName(passing value) { // some code message box here if (true) { true code} else { else code} }

具有服务层,业务层和entity framework的N层架构

只是想要一些反馈/帮助我正在构建我的应用程序的方式。 我目前的解决方案结构如下所示: UI(实际MVC应用程序) 核心(仅控制器和ViewModels) 服务 BLL 数据(entity frameworkDbContext,映射到Domain对象) 域(简单POCO对象) 接口 其他的东西 Ninject将DbContext注入Controller(每个请求) AutoMapper将域对象映射到ViewModel 所有程序集都引用了Interfaces项目,顾名思义,它只不过是简单的接口(即IDbContext,IRepository等)。 服务项目将所有其他项目“联系在一起”。 它是唯一一个直接引用数据访问层(entity framework)的程序集。 我在下面提供了一些代码: Controller的示例如下所示: namespace Core.Controllers { public class HomeController : Controller { private IDbContext dbContext; public HomeController(IDbContext dbContext) { this.dbContext = dbContext; } public ActionResult Users() { UserService userService = new UserService(dbContext); var users = userService.GetAllUsers(); return View(Mapper.Map<IEnumerable>(users)); } […]

在ASP MVC 3中创建可下载的文本文件时无法访问关闭的流

我试图提示可下载的文本文件(.txt),但我收到此错误: 无法访问封闭的Stream。 我在这里看过类似的问题: 无法访问封闭的流但是它不是很有用。 这是我的代码: private FileStreamResult Export() { string name = “filename.txt”; MemoryStream stream = new MemoryStream(); using (StreamWriter writer = new StreamWriter(stream)) { StringBuilder sb = new StringBuilder(); sb.Append(“A text…”); writer.WriteLine(sb.ToString()); } return File(stream, “text/plain”, name); } 更新(工作副本): 这给了我一个空白的文本文件。 private FileResult Export() { string name = “filename.txt”; MemoryStream stream = new MemoryStream(); StreamWriter […]

用于动态视图数据/表单的ASP.Net MVC编辑器模板

我正在实现一个MVC3 / Razor Web应用程序,它可以检索用户可以从其他服务编辑的一些“字段”,因此在视图中编辑的属性列表在编译时是完全动态的和未知的。 我编写了一些部分视图和HTML帮助程序,它们遍历从其他服务检索到的组和属性。 现在,我必须为各种属性类型构建标记,并考虑为什么不重新使用MVC编辑器模板系统呢? 支持各种数据类型(例如复选框等),甚至可以使用我的自定义模板对其进行自定义。 到目前为止这么好但我如何使用Html.EditorFor()或Html.Editor()来获取自定义数据对象/属性? 构建动态表单而不使用静态类型数据作为视图模型的含义。 这是我的HTML帮助程序代码的简约示例: public static MvcHtmlString GetField(this HtmlHelper helper, Field field) { … return helper.EditorFor(field, m => m.Value); … } 属性“field”是我从外部服务获得的字段。 它具有object类型的“Value”属性。 我喜欢为这个属性类型构建编辑器代码。 据我所知,编辑器模板是基于当前的视图模型构建的。 我可以将另一个对象作为模型传递给当前视图模型(例如,在上面的示例“field”中)? 任何帮助都会很棒! 干杯,马克

如何为我的asp.net MVC网站的每个访问者添加一个cookie?

我正在尝试使用razor作为视图引擎的ASP.NET MVC 3站点。 我需要为我网站的每个访问者分配一个cookie。 最好的地方/方式是什么? 请详细说明,因为我是ASP.NET的新手。