小编Eri*_*ips的帖子

参数中包含斜杠的网址?

题:

我正在创建一个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)

asp.net-mvc asp.net-mvc-routing

63
推荐指数
3
解决办法
4万
查看次数

如何设置当天的午夜时间?

每次我在我的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?

.net c#

60
推荐指数
4
解决办法
9万
查看次数

反序列化接口实例的集合?

我想通过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>集合呢?

c# json.net

59
推荐指数
6
解决办法
5万
查看次数

在EditorFor()中显示格式化日期

我正在使用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# asp.net-mvc date

57
推荐指数
2
解决办法
9万
查看次数

为工作生成多个线程,然后等到所有完成

只想就多线程任务的"最佳实践"提出一些建议.

例如,我们有一个C#应用程序,它在启动时从我们数据库中的各种"类型"表中读取数据,并将信息存储在我们传递给应用程序的集合中.这可以防止我们每次需要此信息时都会访问数据库.

此时应用程序正在同步读取10个表中的数据.我真的希望从一个并行运行的不同线程中的每个表中读取应用程序.在继续启动应用程序之前,应用程序将等待所有线程完成.

我已经研究过BackGroundWorker但只是想要一些关于完成上述工作的建议.

  1. 该方法是否合乎逻辑,以加快应用程序的启动时间
  2. 我们如何才能最好地处理所有线程,记住每个线程的工作是彼此独立的,我们只需要等待所有线程完成后再继续.

我期待着一些答案

c# multithreading backgroundworker

53
推荐指数
5
解决办法
6万
查看次数

如何使用XSLT创建不同的值

我有这样的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)

xslt

52
推荐指数
5
解决办法
8万
查看次数

如何使用条件三元运算符在lambdas之间有条件地分配Func <>?

通常,在使用条件运算符时,这是语法:

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)

c# lambda conditional-operator

47
推荐指数
2
解决办法
4662
查看次数

RazorEngine布局

我正在使用Razor引擎https://github.com/Antaris/RazorEngine来解析我的电子邮件模板的正文.是否可以定义布局并包含其他.cshtml文件?例如,公共页眉和页脚.

c# razorengine

46
推荐指数
1
解决办法
2万
查看次数

T4模板在解决方案中添加现有项目的组件

嗨,我需要在我的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不使用项目中的引用.

我该如何解决这个问题?

c# t4

46
推荐指数
3
解决办法
2万
查看次数

您必须添加对程序集mscorlib的引用,版本= 4.0.0

我在将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# linq .net-core asp.net-core

46
推荐指数
3
解决办法
3万
查看次数