小编Jer*_*ose的帖子

Javascript相当于.NET的DateTime.Parse

我正在尝试构建一个验证器,它将使用.NET的DefaultModelBinder,使用DateTime.Parse将字符串从表单发布转换为DateTime.我不想等到日期已经发布到服务器,因为它意识到这是一个糟糕的约会.

目前,jquery.validate使用以下代码来验证日期字段:

// http://docs.jquery.com/Plugins/Validation/Methods/date
date: function(value, element) {
    return this.optional(element) || !/Invalid|NaN/.test(new Date(value));
}
Run Code Online (Sandbox Code Playgroud)

但是,由于Javascript糟糕的Date解析器,这个:

275481/69/100089

将评估为有效,至275760年9月12日.

而另一方面,这:

2013年11月19日

将评估为无效.

当然,我知道C#的DateTime.Parse()会考虑文化(本地化)和闰年等问题,我可以接受假设一种固定的(美国)文化,并允许"02-29-2013"​​在客户端上并在服务器上启动它(理想情况下不是,但它是可以接受的).

但我不敢相信有人没有把更好的日期验证器放在一起使用C#的DateTime.Parse()逻辑.

也许有人,我只是没有找到它 - 这就是我在这里张贴的原因.

而且我知道我有几种方法可以解决这个问题 - 从非常简单(不太准确)到极其复杂(更准确),但我希望有人已经走下这条路并找到了最佳点.

javascript c# asp.net-mvc jquery asp.net-mvc-3

10
推荐指数
1
解决办法
3073
查看次数

无法让DropDownListFor在MVC3中使用EditorFor

我有一个非常简单的问题,有一个我无法找到的解决方案.

鉴于以下模型:

public class InfoViewModel
{
    public SelectList States { get; set; }

    [DisplayName("State")]
    public string State { get; set; }
}
Run Code Online (Sandbox Code Playgroud)

我认为以下工作正常:

@Html.DropDownListFor(m => m.State, Model.States)
Run Code Online (Sandbox Code Playgroud)

但是,如果我尝试将其拉入编辑器模板(名为"SelectList"),例如:

@model System.String
@Html.DropDownListFor(m => m, ViewData["selectList"])
Run Code Online (Sandbox Code Playgroud)

然后使用EditorFor构建下拉列表:

@Html.EditorFor(m => m.State, "SelectList", new { selectList = Model.States })
Run Code Online (Sandbox Code Playgroud)

它失败并出现以下错误:

'System.Web.Mvc.HtmlHelper<string>' does not contain a definition for 
'DropDownListFor' and the best extension method overload 
'System.Web.Mvc.Html.SelectExtensions.DropDownListFor<TModel,TProperty>
(System.Web.Mvc.HtmlHelper<TModel>, 
System.Linq.Expressions.Expression<System.Func<TModel,TProperty>>, 
System.Collections.Generic.IEnumerable<System.Web.Mvc.SelectListItem>)' 
has some invalid arguments
Run Code Online (Sandbox Code Playgroud)

我很难理解这两者之间的区别.我已尝试各种解决方法来排除故障,并获得相同的错误,或其他.

提前致谢.

asp.net-mvc editorfor html.dropdownlistfor razor asp.net-mvc-3

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

使用CheckBoxFor检查是否需要复选框

我需要在MVC3页面上有一个复选框(用于同意条款).

这是我的模型:

[Required]
[Display("I agree to the terms.")]
public bool Agreement { get; set; }
Run Code Online (Sandbox Code Playgroud)

这是我的观点:

@Html.CheckBoxFor(m => m.Agreement)
Run Code Online (Sandbox Code Playgroud)

但是,验证没有发生 - 它允许无论如何都提交表单.

我发现CheckBoxFor渲染了一个额外的隐藏字段,但我甚至尝试渲染我自己的复选框,但它仍然没有得到验证:

<input type="checkbox" name="Agreement" id="Agreement" value="true" data-val="true"
    data-val-required="You must agree to the terms before proceeding." />
Run Code Online (Sandbox Code Playgroud)

我究竟做错了什么?

asp.net-mvc data-annotations razor

9
推荐指数
0
解决办法
9595
查看次数

将HtmlAttributes添加到模板

如果我将HtmlAttributes传递给模板,如下所示:

@Html.DisplayFor(m => m.FirstName, new { htmlAttributes = new { @class = "orangetxt strongtxt" } })
Run Code Online (Sandbox Code Playgroud)

在我的模板中,我如何将这些注入到我的HTML中:

<span @ViewData["htmlAttributes"]>@Model</span>
Run Code Online (Sandbox Code Playgroud)

这几乎可以工作,但它做了一些非常奇怪的事情,所以我假设这不是要走的路.

我意识到我可以通过HtmlHelper扩展方法实现这一点,以呈现完整的HTML元素(在本例中为span)并以这种方式传递属性,但是有没有办法直接将属性呈现为HTML元素,如上所述例?

html-helper asp.net-mvc-templates razor asp.net-mvc-3

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

经典ASP站点请求随机挂起在IIS7中

我有一个运行Windows Server 2008 Web Edition(x64)的新IIS7盒子,我在那里建立了一个现有的经典ASP站点.该网站在大多数情况下运行良好且超级快速,但会随机挂起(大约20个左右的请求).通过挂起,我的意思是我将从浏览器中单击一个页面,并且浏览器(Mac上的Crome)从不响应 - 它只是不断加载,直到我在大约3分钟后得到以下错误:

Error 7 (net::ERR_TIMED_OUT): The operation timed out.

我很确定这是一个特定于Chrome的错误,所以我不是太挂了实际的错误,而是因为超时的原因.该站点连接到同一网络上的SQL 2005服务器,但我很确定这不是SQL超时,因为这将在30秒内发生,并给我一个关于SQL的特定错误.我认为这是我的网站或服务器的问题.

请注意,经常在看到这个之后,我可以简单地停止请求并重新加载页面,它将再次加载得很好,超级快速.

我甚至不确定从哪里开始排除故障.我必须弄明白这一点,否则这将意味着一个新的服务器购买.

在此先感谢您的任何建议.

iis-7 asp-classic windows-server-2008

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

DisplayFormat未应用于十进制值

我有一个模型属性,我正在尝试使用EditorFor模板进行渲染,我正在尝试使用DisplayFormat属性应用格式.然而,它根本不起作用 - 它完全被忽略了.

这是我的模板:

@model System.Decimal?
@Html.TextBoxFor(m => m)
Run Code Online (Sandbox Code Playgroud)

这是我的模型:

[DisplayFormat(ApplyFormatInEditMode = true, DataFormatString = "{0:0.00}")]
public decimal? Retail { get; set; }
Run Code Online (Sandbox Code Playgroud)

这是我的观点:

@Html.EditorFor(m => m.Retail)
Run Code Online (Sandbox Code Playgroud)

但它呈现的文本框具有以下值:

189.9900

它似乎非常直接,但它不起作用,我不知道为什么.

更新: 只是为了踢,我尝试使用DisplayFor模板,它工作:

@Html.DisplayFor(m => m.Retail)
Run Code Online (Sandbox Code Playgroud)

那么,当我设置ApplyFormatInEditMode为true 时,为什么DisplayFor模板可以工作,而不是EditorFor模板呢?

更新2: 没关系,工作的原因是因为我的十进制显示模板被硬编码为格式化.所以我的显示模板也不起作用.

asp.net-mvc decimal mvc-editor-templates asp.net-mvc-3 displayformat

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

Elmah不在IIS7服务器上工作

我让Elmah在我的MVC 3网站上运行,并且让所有东西都在我的本地开发机器上运行.

但是,现在我已将我的网站移动到我的生产服务器,Elmah无法正常工作.我在我的实时服务器上使用相同的SQL帐户(和连接字符串),就像我在本地计算机上使用的那样.EF4连接(与Elmah相同)工作得很好.

我在偶数日志或SQL事件探查器中看不到任何内容.我也没有在SQL日志中看到任何错误.

关于可能发生的事情的任何想法,或者我如何解决这个问题?

提前致谢.

sql-server asp.net-mvc iis-7 elmah asp.net-mvc-3

7
推荐指数
1
解决办法
4181
查看次数

获取VS2010,特别是Razor视图,将自定义"数据 - "属性识别为有效

我知道HTML5支持自定义data-*属性,我知道VS2010 SP1应该包含HTML5支持.

但是,当我安装VS2010 SP1时,我仍然会在具有data-*属性的元素上获得验证错误.

例如,这个:

<a id="Clicky" data-for="@Model.Id">Clicky</a>
Run Code Online (Sandbox Code Playgroud)

在VS2010中产生以下警告:

验证(XHTML 1.0 Transitional):属性'data-for'不是元素'a'的有效属性.

虽然我知道这些只是警告并且可以安全地被忽略,但我试图让我的网站尽可能符合标准,如果我的警告列表被这些警告垃圾邮件,我将无法看到有效的警告通过所有的噪音.

我做错了什么,或者我是否必须看到这些警告?

提前致谢.

asp.net-mvc html5 visual-studio-2010 razor asp.net-mvc-3

7
推荐指数
1
解决办法
2002
查看次数

嘲笑Guid.NewGuid()

假设我有以下实体:

public class User
{
    public int Id { get; set; }
    public string Username { get; set; }
    public Guid UserGuid { get; set; }
    public Guid ConfirmationGuid { get; set; }
}
Run Code Online (Sandbox Code Playgroud)

以下接口方法:

void CreateUser(string username);
Run Code Online (Sandbox Code Playgroud)

部分实现应该创建两个新的GUID:一个用于UserGuid,另一个用于ConfirmationGuid.他们应该通过将值设置为来完成此操作Guid.NewGuid().

我已经使用接口抽象了Guid.NewGuid():

public interface IGuidService
{
    Guid NewGuid();
}
Run Code Online (Sandbox Code Playgroud)

因此,当只需要一个新的GUID时,我可以轻松地模拟它.但是我不确定如何在一个方法中模拟对同一方法的两个不同的调用,以便它们返回不同的值.

c# tdd unit-testing moq mocking

7
推荐指数
2
解决办法
4795
查看次数

如何将多行字符串拆分为tsql中的列

我有一个数据库字段,其中包含存储为多行字符串的地址信息.

88 Park View
Hemmingdale
London
Run Code Online (Sandbox Code Playgroud)

谁能告诉我将第1行,第2行和第3行作为select语句中的不同字段的最佳方法?

关心理查德

sql t-sql sql-server sql-server-2008

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