我想在RazorEngine中使用以下Razor模板:
@{
Layout = null;
}
@Html.Raw(MyNamespace.MyClass.SomePropertyWithHtml)
Run Code Online (Sandbox Code Playgroud)
当我调用它时,我得到2个错误 - 一个抱怨它无法处理布局,另一个抱怨它不知道如何处理Html帮助器.
还有其他问题和答案在这里建议这可能在v3中,我正在使用NuGet上的当前包 - v3.0.8 - 但目前尚不清楚这是如何完成的.目前我这样称呼它:
string html = RazorEngine.Razor.Parse(File.ReadAllText(path));
Run Code Online (Sandbox Code Playgroud)
其他答案建议首先使用Razor.SetBaseTemplate,它不出现在当前源代码或git上的3.0分支中.望着代码我看到代码引用布局和路段,但出现的布局代码依赖于解决由名称的模板,而我正在试图做的甚至没有需要解决的模板 - 我只需要它来应付使用Layout = null.该代码还包含似乎提供在Web项目中的一个的HtmlHelper MvcTemplateBase - 但它在该项目中唯一的类,而不是在网络或核心项目的任何地方引用.
这个类似的问题: RazorEngine与@Html有关
只需链接到主页,您可以在那里找到更多信息 - 主页只是描述项目的简短句子.
那么,如何用RazorEngine v3.0解析上面的Razor视图?
在底层jQuery使用地图"的UUID"(只是将其作为保持计数器jQuery.uuid)来解决著名的内存泄漏问题浏览器有当您从Javascript的DOM附加属性的标签.代替这样做,JQuery使用它$.data(tag, name, value)来存储从uuid键入的地图中的数据(可以通过检查确定的键tag[jQuery.expando]).
虽然$.data()非常有用,但有时您希望将数据映射到标记而不将数据转储到一个全局存储桶中 - 您需要自己的小数据桶,例如,检查长度或循环.
作为一个人为的例子,假设你有点击时可以旋转通过4种状态之一的图标.当一个处于状态2时,您希望将其添加到状态2中的图标数组.最明显的方法是将标记添加到数组中; 但这样做会造成内存泄漏.你可以调用$.data()复选框,但这并不能完成你想要做的事情 - 你必须遍历所有复选框来检查$.data()它们以找出哪些是和不在列表中.
你需要在数组中存储一些标签的抽象,这就是jQuery的UUID.您可以编写自己的UUID功能,但理想情况下,您只需利用已内置于JQuery的UUID功能,无论是代码大小还是质量原因.您可以要求JQuery通过调用隐式地将UUID附加到标记$.data(tag, 'irrelevant', 1),然后检查tag[jQuery.expando]以获取其UUID,最后在列表中使用它...但这有点像黑客.真正理想的是在公共API中公开以下内容:
$.getUuid(tag):检查并创建一个UUID(如果不存在) - 理想情况下,该方法是从中分解的,$.data()并为传入的标记创建或获取uuid.
那么,有没有一个原因在jQuery中没有考虑到它自己的方法?这在某种程度上有害吗?它只是从来没有看似有用的东西吗?
我应该注意到,我实际上已经在我们正在使用的jQuery版本中考虑了它,并且它非常有用.但也许存在潜在的风险,我没有打算使用它.我也知道一个插件可以实现这一点,但它有点破碎 - 并且有两个代码路径来执行相同的UUID功能既有点浪费又有点脆弱.
是否存在类似于Dapper,PetaPoco或Massive的Micro-ORM ......但对于PHP?
我正在使用EF 4.3.1 Code First Migrations.我有一张桌子:
public class Product
{
[Key]
[Column(Order=0)]
[MaxLength(100)]
public string Store { get; set; }
[Key]
[Column(Order=1)]
[MaxLength(100)]
public string Sku { get; set; }
}?
Run Code Online (Sandbox Code Playgroud)
我有一个使用上面的代码创建的现有表.然后我将其移动到单列主键:
public class Product
{
[MaxLength(100)]
public string Store { get; set; }
[Key]
[MaxLength(100)]
public string Sku { get; set; }
}?
Run Code Online (Sandbox Code Playgroud)
这导致EF在下一次自动迁移中失败,抱怨:
ALTER TABLE [产品] ALTER COLUMN [Store] nvarchar
对象'PK_Product'依赖于列'Store'.ALTER TABLE ALTER COLUMN存储失败,因为一个或多个对象访问此列.
显然,在尝试触发此ALTER语句之前需要删除PK_Product(为什么它根本不改变列?),而是迁移失败.
我做错了什么或这是一个错误?解决方法?
我需要将所有https请求重定向到http,例如,如果有人访问https://www.example.com/another-page/,请访问http://www.example.com/another-page/
我现在在web.config中有以下重写规则,但它无法正常工作.它将https://www.example.com/another-page/重定向到https://www.example.com/,所以到了网站的根目录,但我希望重定向保留在同一个网址中将https重写为http.
<rule name="Redirect to HTTP" stopProcessing="true">
<match url="(.*)" />
<conditions>
<add input="{R:1}" pattern="^onepage/(.*)$" negate="true" />
<add input="{HTTPS}" pattern="^ON$" />
</conditions>
<action type="Redirect" url="http://{HTTP_HOST}/{R:0}" redirectType="Permanent" />
</rule>
Run Code Online (Sandbox Code Playgroud)
任何有关更改上述规则的帮助,以便它只将https更改为http,但保持访问的完整网址将非常感谢!
我正在探索新的asp.net身份.使用代码优先和迁移功能向Users表"AspNetUsers"添加字段似乎很棒.
我想添加"Name","CreatedOn"和"CreatedFromIP"等列,并能够从.NET中读取它
有简单的解决方案吗?
通过API连接到AWS CloudFront时,无论我做什么,都会得到异常:
Credential should be scoped to a valid region
Run Code Online (Sandbox Code Playgroud)
相同的凭据可用于帐户具有其权限的任何其他请求,例如S3。
升级到最新的ImageMagick/Magick.NET(7.0.2.901),它在本地构建并运行良好,但在服务器上出现此错误.
无法在DLL'Magick.NET-Q8-x64.Native.dll'中找到名为"Environment_SetEnv"的入口点.
似乎是一个新问题.从这里的变化来看:
https://magick.codeplex.com/discussions/650746
不再需要VC运行时,因此安装它们不会成为问题 - 而且,我已经为库的先前版本安装了2008年,2012年和2015年的VC运行时,这些工作正常.
IIS中的Windows Server 2008 64位,64位.Net 4.
当前的解决方法是回滚到7.0.0.22,它运行没有错误.
Install-Package Magick.NET-Q8-AnyCPU -Version 7.0.0.22
Run Code Online (Sandbox Code Playgroud)
使用适当的视图模板绘制项目的标准MVC示例是:
Html.DisplayFor(m => m.Date)
如果Model对象具有名为Date of DateTime的属性,则返回带有Display/DateTime.ascx模板中的HTML的字符串.
假设您想要执行相同的操作,但无法使用强类型版本 - 您在编译时不知道此View的Model类型.你使用旧的:
Html.Display( "日期");
所以这是困难的部分.
假设模型是IEnumerable.您不知道这些对象在编译时是什么,但在运行时它们恰好是Date类型为Date的对象,如:
public class ModelClass
{
public DateTime Date { get; set; }
}
Run Code Online (Sandbox Code Playgroud)
现在假设您希望View迭代这些对象并渲染每个对象.如果你所关心的只是价值,你可以做到这一点:
<%
StringBuilder sb = new StringBuilder();
foreach(object obj in (IEnumerable<object>)Model)
{
Type type = obj.GetType();
foreach(PropertyInfo prop in type.GetProperties())
{
// TODO: Draw the appropriate Display PartialView/Template instead
sb.AppendLine(prop.GetValue(obj, null).ToString());
}
}
%>
<%= sb.ToString() %>
Run Code Online (Sandbox Code Playgroud)
我显然采取了一些捷径来保持这个例子的重点.
这就是重点 - 我如何实现我为自己写的TODO?我不只是想获得价值 - 我希望它的格式很好,如Html.Display("Date").但是,如果我只是调用Html.Display("Date"),它会检查Model,这是一个IEnumerable,用于名为Date的属性,它当然没有.Html.Display不会将对象作为参数用作模型(如Html.Display(obj,"Date"),并且我可以找到的所有类和方法都在内部,所以我可以' t调整并直接调用它们.
必须有一些简单的方法来完成我想要做的事情,但我似乎无法找到它.
只是为了确保我清楚 - 这是DateTime.ascx代码的一个例子:
<%@ Control Language="C#" Inherits="System.Web.Mvc.ViewUserControl<System.DateTime>" %>
<%= …Run Code Online (Sandbox Code Playgroud) html-helper ×2
.net ×1
amazon-ec2 ×1
api ×1
asp.net-mvc ×1
expando ×1
iis ×1
jquery ×1
layout ×1
magick.net ×1
multi-touch ×1
orm ×1
php ×1
razor ×1
razorengine ×1
region ×1
uuid ×1
web-config ×1
windows-7 ×1
winforms ×1