小编Ren*_*bis的帖子

使用OptGroup组构造选择列表

当前的项目:

  • ASP.NET 4.5.2
  • MVC 5

我正在尝试使用OptGroups模型构建一个选择菜单,但我的问题是我似乎无法构建OptGroups自己.

我的模特:

[DisplayName("City")]
public string CityId { get; set; }
private IList<SelectListItem> _CityName;
public IList<SelectListItem> CityName {
  get {
    List<SelectListItem> list = new List<SelectListItem>();
    Dictionary<Guid, SelectListGroup> groups = new Dictionary<Guid, SelectListGroup>();
    List<Region> region = db.Region.Where(x => x.Active == true).OrderBy(x => x.RegionName).ToList();
    foreach(Region item in region) {
      groups.Add(item.RegionId, new SelectListGroup() { Name = item.RegionName });
    }
    List<City> city = db.City.Where(x => x.Active == true).ToList();
    foreach(City item in city) {
      list.Add(new SelectListItem() { …
Run Code Online (Sandbox Code Playgroud)

asp.net asp.net-mvc asp.net-mvc-5

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

Razor &amp; null 传播 - 在显式 C# 6 MVC 5 项目下不工作

当前的项目:

我的剃刀代码:

@if(Session["Type"]?.ToString() == "Insurance") {
  <text>policy of insurance</text>
} else if(Session["Type"]?.ToString() == "Warranty") {
  <text>policy of warranty</text>
} else {
  <text>protection policy</text>
}
Run Code Online (Sandbox Code Playgroud)

Visual Studio 明确地将此标记为错误,

功能“空传播运算符”在 C# 5 中不可用。请使用语言版本 6 或更高版本。

和Visual Studio明确使用C#6:

在此处输入图片说明

当我尝试运行页面本身时,出现错误:

CS1525:无效的表达式术语“.”

这表明它明确地在问号后面的句点之后。

这个项目明确作为一个 C# 6 项目开始,我很困惑为什么它重新回到 C#5。

另一个奇怪的问题:这在调试和我的本地测试设置中都运行得很好(我发布到文件系统,使用本地 IIS …

asp.net asp.net-mvc razor asp.net-mvc-5 c#-6.0

8
推荐指数
1
解决办法
2008
查看次数

Web.Config可能是“无法读取的”

当前的项目:

  • ASP.NET 4.5.2
  • MVC 5

我有一个很奇怪的问题。当我从VS2015中进行调试时,我可以使用该站点并与该站点进行交互,而不会出现任何问题,但是,每次我想通过调试来检查某些东西时,都要花很长时间进行编译。另外,一旦我开始调试,文件将被锁定并且无法编辑;当我停止调试内部IIS导致VS崩溃时(这适用于我使用的任何站点,而不仅仅是这个站点)。因此,除非处于调试模式,否则无法使用VS2015内部的IIS。

当我将IIS Express的本地安装附加到项目文件所在的目录或已编译项目插入的目录时,该站点仅适用于普通页面。任何涉及数据库请求的操作都将失败,并显示500服务器错误。其他具有相同设置的站点(已安装的IIS指向项目目录)工作正常,但是对于需要数据库连接的任何操作,此站点均会失败:

最可能的原因:

  • IIS收到了请求;但是,在处理请求期间发生内部错误。该错误的根本原因取决于哪个模块处理请求以及发生此错误时工作进程中发生的情况。
  • IIS无法访问网站或应用程序的web.config文件。如果NTFS权限设置不正确,可能会发生这种情况。
  • IIS无法处理网站或应用程序的配置。
  • 经过身份验证的用户没有使用此DLL的权限。
  • 该请求已映射到托管处理程序,但未安装.NET扩展功能。

您可以尝试的事情:

  • 确保web.config文件的NTFS权限正确,并允许访问Web服务器的计算机帐户。
  • 检查事件日志以查看是否记录了任何其他信息。
  • 验证DLL的权限。
  • 如果请求已映射到托管处理程序,请安装.NET可扩展性功能。
  • 创建跟踪规则以跟踪对此HTTP状态代码的失败请求。有关为失败的请求创建跟踪规则的更多信息,请单击此处。
Detailed Error Information:
Module         ManagedPipelineHandler
Notification   ExecuteRequestHandler
Handler        System.Web.Mvc.MvcHandler
Error Code     0x00000000
Requested URL  http://project.localhost:80/Home/Test
Physical Path  D:\Source\Repos\Project\Project\Home\Test
Logon Method   Anonymous
Logon User     Anonymous
Run Code Online (Sandbox Code Playgroud)

我已经研究了Web.Config的权限,但是它们都很好,IUSR和IIS_IUSRS都被赋予了读取/执行权限。应用程序池设置为“集成”,这似乎不是特定于IIS的问题是因为计算机上的许多其他数据库驱动的站点都可以正常工作(我将它们保留下来是因为我需要经常维护)。因此,我在这里认为这可能是Web.Config问题,至少就其设置方式而言(再次,权限与计算机上的其他站点相同)。但是,Visual Studio内置的IIS版本在该站点上正常工作……只要停止调试(在任何站点上),它都会死掉(崩溃)。

因此,我正在寻找建议-怎样才能使VS2015中内置的IIS版本正常工作,但是Windows中的IIS失败,并且当前站点中存在任何数据库连接?请记住,Windows IIS可以与其他站点以及该站点中的静态页面一起使用,而不能与具有任何类型的数据库访问权限的操作一起使用。

我希望有人可以告诉我Web.Config是否有问题:

<?xml version="1.0" encoding="utf-8"?>
<configuration>
  <configSections>
    <section name="entityFramework" type="System.Data.Entity.Internal.ConfigFile.EntityFrameworkSection, EntityFramework, Version=6.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089" requirePermission="false" />
    <sectionGroup name="nwebsec">
      <section name="httpHeaderSecurityModule" type="NWebsec.Modules.Configuration.HttpHeaderSecurityConfigurationSection, NWebsec, Version=4.2.0.0, Culture=neutral, PublicKeyToken=3613da5f958908a1" requirePermission="false" />
    </sectionGroup>
    <sectionGroup name="elmah"> …
Run Code Online (Sandbox Code Playgroud)

asp.net iis asp.net-mvc iis-express asp.net-mvc-5

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

Fluent Validation - 潜在空值的条件验证

我有许多表单字段,例如电话号码和邮政编码,可以留空。但是,当它们被填写时,我希望它们符合严格的格式规则。

我希望使用 Fluent Validation 来完成这项任务,但我还没有找到任何可以执行以下操作的方法:

RuleFor(x => x.PhoneNumber)
  .Matches(@"^\d{3}-\d{3}-\d{4}$")
  .When(x => x.PhoneNumber.Length != 0)
  .WithMessage("Phone number must be a valid 10-digit phone number with dashes, in the form of &#8220;123-456-7890&#8221;")
  .Length(12, 12).When(x => x.PhoneNumber.Length >= 1).WithMessage("Phone number must be in the form of &#8220;123-456-7890&#8221;");
Run Code Online (Sandbox Code Playgroud)

现在这两个都会抛出“未将对象引用设置为对象的实例”。错误。

我是否有任何意义,或者 FluentValidation 甚至不可能做到这一点?

asp.net-mvc fluentvalidation fluentvalidation-2.0 asp.net-mvc-5

3
推荐指数
1
解决办法
2194
查看次数

一切就绪,但验证不起作用

该项目:

  • ASP.NET 4.5.2
  • MVC 5
  • 流利验证
  • 没有数据库,没有后端

Web.config:

<appSettings>
  <add key="webpages:Version" value="3.0.0.0" />
  <add key="webpages:Enabled" value="false" />
  <add key="ClientValidationEnabled" value="true" />
  <add key="UnobtrusiveJavaScriptEnabled" value="true" />
</appSettings>
Run Code Online (Sandbox Code Playgroud)

模型:

[Validator(typeof(ContactValidator))]
public class ContactViewModel {
  [DisplayName("Name:")]
  public string Name { get; set; }
  [DisplayName("Phone:")]
  [DataType(DataType.PhoneNumber)]
  public string Phone { get; set; }
  [DisplayName("eMail:")]
  [DataType(DataType.EmailAddress)]
  public string eMail { get; set; }
  [DisplayName("Message:")]
  public string Message { get; set; }
}
Run Code Online (Sandbox Code Playgroud)

验证器:

public class ContactValidator : AbstractValidator<ContactViewModel> {
  public ContactValidator() {
    RuleFor(x => x.Name) …
Run Code Online (Sandbox Code Playgroud)

asp.net asp.net-mvc asp.net-mvc-5

3
推荐指数
1
解决办法
92
查看次数