Tag: razor

使用Razor视图引擎将MVC 2项目迁移到MVC 3的最佳方法是什么?

使用Razor视图引擎将MVC 2项目迁移到MVC 3的最佳方法是什么?

ASP.NET MVC:视图引擎无法找到使用由MEF加载的模型类型的视图

我正在尝试创建一个框架,允许将控制器和视图动态导入MVC应用程序。 到目前为止它是如何工作的: 我正在使用.NET 4,ASP.NET MVC 3 RC和Razor ViewEngine 每个项目使用MEF导出和导入控制器 – 我从一个给定项目调用一组控制器和视图“模块” 使用MEF发现的程序集由BuildManager使用预应用程序启动方法和BuildManager.AddReferencedAssembly动态引用。 使用构建事件将二进制文件(来自导出项目)和视图复制到目标项目的文件夹结构中 使用自定义控制器工厂选择控制器,该工厂inheritance自DefaultControllerFactory并覆盖GetControllerType() 使用自定义视图引擎选择视图,该引擎inheritance自RazorViewEngine并覆盖GetView()和GetPartialView()以允许它在特定于模块的视图目录中查找视图 除了使用强类型模型的视图外 ,一切都可以工作。 使用动态模型的视图工作正常,但是当我使用@model指定模型类型时,我得到一个YSOD,其中显示“未找到视图’索引’或其主文件”。 在调试我的ViewEngine实现时,我可以看到: this.VirtualPathProvider.FileExists(String.Format(this.ViewLocationFormats[2], viewName, controllerContext.RouteData.GetRequiredString(“controller”)))返回true,而 this.FileExists(controllerContext, String.Format(this.ViewLocationFormats[2], viewName, controllerContext.RouteData.GetRequiredString(“controller”)))返回false。 在Reflector中, FileExists()的RazorViewEngine实现最终实现了这样做: return (BuildManager.GetObjectFactory(virtualPath, false) != null); 但是,我无法从Reflector查看BuildManager.GetObjectFactory() ,因为它以某种方式隐藏。 我怀疑它与模型类型是从MEF加载的类型这一事实有关,但由于我已经引用了MEF从BuildManager发现的程序集,因此我没有引导。 任何人都可以更深入地了解可能发生的事情吗? 更新:原来我在.NET 4之前使用的是过时版本的Reflector。我现在可以看到GetObjectFactory(),但我似乎找不到任何有用的东西。 我已经尝试将其添加到我的FindView()重载中: try {var path = String.Format(this.ViewLocationFormats [2],viewName,controllerContext.RouteData.GetRequiredString(“controller”)); var objFactory = System.Web.Compilation.BuildManager.GetObjectFactory(virtualPath:path,throwIfNotFound:true); } catch {} 不幸的是, objFactory最终为null,并且不会抛出任何exception。 […]

FullCalendar,如何允许用户编辑/删除事件并将其从数据库中删除?

我正在按照自己的意愿控制Full Calendar模块。 目前我拥有它以便日历getEvents方法联系一个SQL表并返回用户的所有事件 – 该部分完美地工作。 我想添加的function是允许用户编辑/删除事件,并将这些更改反映在数据库中! 我的意思是在我的表中,用户可以拖放事件来改变他们的时间,当他们点击一个事件时,我希望出现一个对话框,询问他们是否要删除此事件。 我希望这些更改能够在SQL表中表示。 我怎样才能做到这一点? 我是JQuery,JavaScript和DatePicker的新手。 从我的谷歌搜索和尝试学习,我在这里找到了类似的线程 function (calEvent) { removeRequestedEvent($(this), calEvent); }, It just passes in the calendar event and the calendar itself. removeRequestedBooking: function (cal, calEvent) { if (!confirm(“Delete?”)) return; cal.fullCalendar(“removeEvents”, calEvent.id); cal.fullCalendar(“rerenderEvents”); // Re-show draggable element $(“#requests #” + calEvent.id).show(); } 提供此代码,我认为这与我需要的类似,但是我希望在调用removeEvents时从数据库中删除该事件。 我假设我需要一些类似于从数据库中检索事件时的代码(代码如下所示),但我不确定代码应该如何构造。 任何人都可以帮我解决这个问题吗? var db = Database.Open(“users”); […]

在Razor视图中使用“nameof”运算符

在我的VS.NET 2015开发机器上,使用nameof运算符的Razor视nameof魅力一样工作。 部署到Windows服务器时,无法编译CSHTML Razor视图: 名称“nameof”在当前上下文中不存在。 在德国: Der Name’nameof’ist im aktuellen Kontext nicht vorhanden。 我安装了.NET Framework 4.6(“ASP.NET版本:4.6.81.0”)但没有成功。 很可能我错过了一些简单的东西。 不过,我真的很无能为力。 它是web.config设置吗? 或者是其他东西? 我的问题: 如何在CSHTML Razor视图中启用C#6function(如nameof运算符)?

Razor HTML Helpers在Nop Commerce插件中提供智能感知错误

我正在为Nop Commerce编写一个插件,我的HTML助手正在给我智能感知错误。 我得到红线强调它们和错误: 不能使用function’扩展方法’,因为它不是ISO-2 C#语言规范的一部分 无法使用function’lambda表达式’,因为它不是ISO-2 C#语言规范的一部分 这是我的代码: @{ Layout = “”; } @model Nop.Plugin.Widgets.HelloWorld.Models.ConfigurationModel @using Nop.Web.Framework; @Html.Action(“StoreScopeConfiguration”, “Setting”, new { area = “Admin” }) @using (Html.BeginForm()) { Hello World Configuration @Html.OverrideStoreCheckboxFor(model => model.Greeting_OverrideForStore, model => model.Greeting, Model.ActiveStoreScopeConfiguration) @Html.NopLabelFor(model => model.Greeting): @Html.EditorFor(model => model.Greeting) @Html.ValidationMessageFor(model => model.Greeting) @Html.OverrideStoreCheckboxFor(model => model.Name_OverrideForStore, model => model.Name, Model.ActiveStoreScopeConfiguration) @Html.NopLabelFor(model […]

如何使剃刀视图引擎使用c#6.0

目前我的剃刀视图引擎抛出错误并说“请使用语言版本6或更高版本”。 那可能只是重新给我一个指针。 但是我如何使用剃刀使用c#6.0。 我在cs文件中的其余解决方案我可以使用所有新版本7的function。

ASP.Net MVC3 Razor中的动态菜单加载

我想问一下ASP.Net中的动态数据库驱动菜单加载 MVC3razor。 这是我的 1.查看代码 2.菜单模型 3.菜单项的模型 4.导航模型结构 在这个项目中,我有不同的用户登录。对于每次登录,他们都是 由模块限制。所以当用户使用他们进入应用程序时 登录时,他们只能访问自己的帐户。 例如,有两个用户A和B.用户A只能访问帐户和报告,用户B只能访问报告。 要实现这些function,请从数据库加载菜单。 我的问题是如何在ASP.Net MVC3 Razor中实现从数据库加载菜单 查看代码 @{ ViewBag.Title = “Elixir ERP V1.0 Beta”; Layout = “~/Views/Shared/_LayoutUser.cshtml”; } @section leftnav{ } 菜单模型 using System; using System.Collections.Generic; using System.Linq; using System.Web; namespace Elixir.Models { public class Menu { public Menu() { MenuItems = new List(); } public […]

动态添加字段到Razor表单

我有一个Razor表单,其中包含我想要动态添加项目的列表/项目表。 您可以从下拉列表中选择项目,单击“添加”,下拉列表中的项目将添加到列表中。 然后,当我提交表单并且我的控制器的HttpPost方法可以处理输入时,我希望所有这些都通过POST发送。 有没有办法动态添加字段,仍然能够接受它们作为HttpPost函数中的参数?

将常见的razor助手移动到另一个文件

我有一个MVC4网络应用程序,我目前有几个@helper的我在多个页面上使用,在cshtml中定义。 问题是,我必须在他们使用的每个页面上定义它们。 是否可以创建一个包含我所有@helper的.cshtml文件,并将该页面包含在我的视图中? 即,这用于cms区域中的每个Index视图。 @helper DisplayPager(Int32 CurrentPage, Int32 MaxPages) { String IsActive = “”; 0 ? CurrentPage – 1 : 1 })”>Prev @for (int i = 0; i < MaxPages; i++) { IsActive = ((i + 1) == CurrentPage) ? "active" : ""; @(i + 1) } <a href="https://stackoverflow.com/questions/18085263/move-common-razor-helpers-to-another-file/@Url.Action("Index", new { id = CurrentPage + […]

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

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