题:
我正在创建一个wiki软件,基本上是维基百科/ mediawiki的克隆,但是在ASP.NET MVC中(MVC是重点,所以不建议我使用ScrewTurn).
现在我有一个问题:
我使用此路由映射来路由URL,如:http:
//en.wikipedia.org/wiki/ASP.NET
routes.MapRoute(
"Wiki", // Routenname
//"{controller}/{action}/{id}", // URL mit Parametern
"wiki/{id}", // URL mit Parametern
new { controller = "Wiki", action = "dbLookup", id = UrlParameter.Optional } // Parameterstandardwerte
);
Run Code Online (Sandbox Code Playgroud)
现在它刚刚发生在我身上,可能会出现像'AS/400'这样的标题:http:
//en.wikipedia.org/wiki/AS/400
在整体上,还有这个(标题'Slash'):http:
//en.wikipedia.org/wiki//
这一个:http:
//en.wikipedia.org/wiki//dev/null
总的来说,维基百科似乎有一个有趣的标题列表,如:http://en.wikipedia.org/wiki/Wikipedia : Articles_with_slashes_in_title
如何正确制作此路线的路线?
编辑:
类似于:
如果URL以/ Wiki /开头,如果它不以/ wiki/Edit /(但不是/ Wiki/Edit)开头,则将所有其余URL作为Id传递.
编辑:
嗯,只是另一个问题:我如何路由这个:http:
//en.wikipedia.org/wiki/C&A
维基百科可以......
编辑:
根据维基百科,由于与wikitext语法的冲突,在页面标题中永远不能使用以下字符(DISPLAYTITLE也不支持):
# < > [ ] | { …Run Code Online (Sandbox Code Playgroud) 每次我在我的mvc3应用程序中创建一个不可为空的日期时间时,它默认为now(),现在是当前时间的当前日期.我希望将它默认为今天上午12点的时间.
我试图在我的mvc中默认时间......但是......以下内容未设置为今天的日期@ 12am.相反,它默认为现在的日期和时间.
private DateTime _Begin = new DateTime(DateTime.Now.Year, DateTime.Now.Month, DateTime.Now.Day, 12, 0, 0);
public DateTime Begin { get { return _Begin; } set { _Begin = value; } }
Run Code Online (Sandbox Code Playgroud)
对于不可为空的日期时间,如何将当前日期设置为12am?
我想通过json.net序列化这段代码:
public interface ITestInterface
{
string Guid {get;set;}
}
public class TestClassThatImplementsTestInterface1
{
public string Guid { get;set; }
}
public class TestClassThatImplementsTestInterface2
{
public string Guid { get;set; }
}
public class ClassToSerializeViaJson
{
public ClassToSerializeViaJson()
{
this.CollectionToSerialize = new List<ITestInterface>();
this.CollectionToSerialize.add( new TestClassThatImplementsTestInterface2() );
this.CollectionToSerialize.add( new TestClassThatImplementsTestInterface2() );
}
List<ITestInterface> CollectionToSerialize { get;set; }
}
Run Code Online (Sandbox Code Playgroud)
我想用json.net序列化/反序列化ClassToSerializeViaJson.序列化工作正常,但反序列化给了我这个错误:
Newtonsoft.Json.JsonSerializationException:无法创建ITestInterface类型的实例.Type是接口或抽象类,无法实例化.
那么我该如何反序列化List<ITestInterface>集合呢?
我正在使用MVC4和Entity Framework来开发Intranet Web应用程序.我有一个可以编辑的人员列表.当我访问编辑视图时,在文本框"开始日期"中,日期显示如下:7/11/2013 00:00:00.我想要做的是以yyyy/MM/dd格式显示它.我试过了,String.Format("{0:yyyy/MM/dd}", item.StartDate)但它不起作用.我也试过了注释,[DisplayFormat(DataFormatString = "{0:dd MMM yyyy}")]但它也不起作用.
在我看来,我有这个:
<div class="editor-field">
@Html.TextBoxFor(model => model.StartDate, new { @class = "datepicker" })
@Html.ValidationMessageFor(model => model.StartDate)
</div>
Run Code Online (Sandbox Code Playgroud)
有什么想法怎么办?
只想就多线程任务的"最佳实践"提出一些建议.
例如,我们有一个C#应用程序,它在启动时从我们数据库中的各种"类型"表中读取数据,并将信息存储在我们传递给应用程序的集合中.这可以防止我们每次需要此信息时都会访问数据库.
此时应用程序正在同步读取10个表中的数据.我真的希望从一个并行运行的不同线程中的每个表中读取应用程序.在继续启动应用程序之前,应用程序将等待所有线程完成.
我已经研究过BackGroundWorker但只是想要一些关于完成上述工作的建议.
我期待着一些答案
我有这样的XML:
<items>
<item>
<products>
<product>laptop</product>
<product>charger</product>
</products>
</item>
<item>
<products>
<product>laptop</product>
<product>headphones</product>
</products>
</item>
</items>
Run Code Online (Sandbox Code Playgroud)
我希望它输出像
laptop charger headphones
我试图使用,distinct-values()但我想我做错了.谁能告诉我如何使用这个distinct-values()?谢谢.
<xsl:template match="/">
<xsl:for-each select="//products/product/text()">
<li>
<xsl:value-of select="distinct-values(.)"/>
</li>
</xsl:for-each>
</xsl:template>
Run Code Online (Sandbox Code Playgroud)
但它给我这样的输出:
<li>laptop</li>
<li>charger</li>
<li>laptop></li>
<li>headphones</li>
Run Code Online (Sandbox Code Playgroud) 通常,在使用条件运算符时,这是语法:
int x = 6;
int y = x == 6 ? 5 : 9;
Run Code Online (Sandbox Code Playgroud)
没有什么花哨的,非常直接的.
现在,让我们在将Lambda分配给Func类型时尝试使用它.让我解释:
Func<Order, bool> predicate = id == null
? p => p.EmployeeID == null
: p => p.EmployeeID == id;
Run Code Online (Sandbox Code Playgroud)
这是相同的语法,应该工作吗?对?出于某种原因,没有.编译器提供了这个不错的神秘消息:
错误1无法确定条件表达式的类型,因为"lambda表达式"和"lambda表达式"之间没有隐式转换
然后我继续改变语法,这样它确实有效:
Func<Order, bool> predicate = id == null
? predicate = p => p.EmployeeID == null
: predicate = p => p.EmployeeID == id;
Run Code Online (Sandbox Code Playgroud)
我只是好奇为什么它不能以第一种方式工作?
(旁注:我最终不需要这段代码,因为我发现在将int值与null进行比较时,只需使用object.Equals)
我正在使用Razor引擎https://github.com/Antaris/RazorEngine来解析我的电子邮件模板的正文.是否可以定义布局并包含其他.cshtml文件?例如,公共页眉和页脚.
嗨,我需要在我的T4模板文件的解决方案中添加现有项目的程序集.问题是我的T4模板位于名为Project.WebApi的项目中,我在T4模板中需要的类位于名为Project.Common.WebApi的项目中.
我试过像这样导入命名空间:
<#@ import namespace="Project.Common.WebApi.T4TemplateAttribute" #>
Run Code Online (Sandbox Code Playgroud)
但我得到这个错误:
找不到类型或命名空间名称"Project"(您是否缺少using指令或程序集引用?)
我试过像这样添加程序集:
<#@ assembly name="Project.Common.WebApi" #>
Run Code Online (Sandbox Code Playgroud)
我收到了这个错误:
编译转换:找不到元数据文件'Project.Common.WebApi'
我的项目包含T4Template(Project.WebApi),它引用了Project.Common.WebApi但是从我读到的内容来看,T4Template不使用项目中的引用.
我该如何解决这个问题?
我在将Web项目从RC1迁移到RC2时遇到了一些麻烦.当我切换时,我在整个项目中遇到了一堆这些错误.
类型'Func <,>'在未引用的程序集中定义.您必须添加对程序集'mscorlib,Version = 4.0.0.0,Culture = neutral,PublicKeyToken = b77a5c561934e089'的引用
看起来所有的linq函数和lambda表达式都不起作用.
这是我的project.json文件的样子:
"frameworks": {
"netcoreapp1.0": {
"dependencies": {
"System.Linq": "4.1.0-rc2-24027"
},
"imports": [ "net451", "portable-net45+win8" ]
}
},
"dependencies": {
"NETStandard.Library": "1.5.0-rc2-24027",
"Microsoft.EntityFrameworkCore": "1.0.0-rc2-final",
"Microsoft.EntityFrameworkCore.SqlServer": "1.0.0-rc2-final",
"System.ComponentModel.Annotations": "4.1.0-*"
}
Run Code Online (Sandbox Code Playgroud)
这意味着什么?我试过跑步dotnet restore,没有帮助.
c# ×8
asp.net-mvc ×2
.net ×1
.net-core ×1
asp.net-core ×1
date ×1
json.net ×1
lambda ×1
linq ×1
razorengine ×1
t4 ×1
xslt ×1