我试图为私人内部课程设置单元测试,但收效甚微:
namespace Stats.Model
{
public class DailyStat
{
private class DailyStatKey // The one to test
{
private DateTime date;
public DateTime Date
{
get { return date; }
set { date = value.Date; }
}
public StatType Type { get; set; }
public override int GetHashCode()
{
return Date.Year * 1000000 +
Date.Month * 10000 +
Date.Day * 100 +
(int)Type;
}
public override bool Equals(object obj)
{
DailyStatKey otherKey = obj as DailyStatKey;
if (otherKey == null)
return …Run Code Online (Sandbox Code Playgroud) 我是ASP.Net MVC的新手,我发现自己为每个视图制作了一个模型类.例如SignInModel,SignUpModel,EditProfileModel等等.
其中许多都有些相似,具有相同的DB fiels,然后是一些自定义属性.
这真的是MVC应该如何完成,还是我错过了它的某些方面?
我意识到这可能是主观的,但应该有一个"最佳实践".
我已经设置了一个局部视图,其中包含自己的表单标记,如下所示:
<tr>
@using (Html.BeginForm("Create"))
{
<td>
@Html.TextBoxFor(model => model.Date)
@Html.ValidationMessageFor(model => model.Date)
</td>
<td>
@Html.TextBoxFor(model => model.Amount)
@Html.ValidationMessageFor(model => model.Amount)
</td>
<td>
@Html.TextBoxFor(model => model.Tags)
@Html.ValidationMessageFor(model => model.Tags)
</td>
<td>
@Html.EnumDropDownListFor(model => model.Type)
</td>
<td>
<input type="submit" value="Add" />
@Html.ValidationSummary(true)
</td>
}
</tr>
Run Code Online (Sandbox Code Playgroud)
我使用@ Html.Action("Create")在页面上渲染它(它是表格的一部分,因此是<tr>标签.
由于一些奇怪的原因,我的客户端验证不起作用,我首先看到发布时的错误.
部分视图和客户端验证有什么特别之处吗?
我已经包含以下脚本:
<script src="/Scripts/jquery.1.5.1.min.js" type="text/javascript"></script>
<script src="/Scripts/jquery.validate.min.js" type="text/javascript"></script>
<script src="/Scripts/jquery.validate.unobtrusive.min.js" type="text/javascript"></script>
Run Code Online (Sandbox Code Playgroud)
编辑
我只是试着把这个脚本扔到页面上:
jQuery('form').submit(function ()
{
alert(jQuery(this).valid());
});
Run Code Online (Sandbox Code Playgroud)
它警告'true',因此客户端验证脚本肯定存在,并且由于某种原因它不检查有问题的字段: - /
编辑2
我已将页面的整个源代码(HTML + JS)上传到pastebin:http://pastebin.com/GvqLW495
我正在尝试围绕一些基本的C++代码构建一个简单的.Net包装器.
C++代码不依赖于vcredist dll中的任何东西,所以我想知道我是否可以设置我的项目,所以它不需要那些dll工作?
我不想让我的用户下载并运行vcredist,只是为了一个简单的DLL工作.
我刚刚听到Joel和Jeff在他们的播客编号83中谈论发件人ID,而我发现这正是我正在努力的网站所需要的.
从服务器发送的所有电子邮件中大约90%被退回或类似,可能是因为服务器没有"验证".
我有一个服务器的SPF记录,但也是如此.
因此,由于StackOverflow已经解决了这些问题,我猜发件人ID必须成为可行的方法.
据我所知,维基百科需要您在发送邮件时修改邮件标题 - 我将如何从C#中执行此操作?
另外,我需要设置DNS智能等等才能使其工作?
或者我在这里走错了轨道?
编辑:我在C#中使用标准的SmtpClient类来发送邮件,我确实包括明文和邮件的HTML版本.
我还是MVC的新手,所以忍受我:-)
我有一个我正在研究的社区网站,我想在用户登录后显示我的所有页面上有多少用户在线.
我有一个共享视图,用于登录后所有页面的布局(UserLayout.cshtml)
我可以以某种方式添加逻辑,以显示我的共享布局在线计数?
如果它是WebForms我只是为我的母版页有一些代码隐藏,但这显然不是一个选项.
有关用户在线的信息是从缓存中获取的.它不能作为我的任何View Models的属性.
我有一个小的后台线程,它运行应用程序的生命周期 - 但是当应用程序关闭时,线程应该优雅地退出.
问题是该线程以15分钟的间隔运行一些代码 - 这意味着它会睡眠很多.
现在为了让它从睡眠状态中解脱出来,我会向它抛出一个中断 - 但我的问题是,如果有一个更好的方法,因为中断会产生ThreadInterruptedException.
这是我的代码的要点(有点伪):
public class BackgroundUpdater : IDisposable
{
private Thread myThread;
private const int intervalTime = 900000; // 15 minutes
public void Dispose()
{
myThread.Interrupt();
}
public void Start()
{
myThread = new Thread(ThreadedWork);
myThread.IsBackground = true; // To ensure against app waiting for thread to exit
myThread.Priority = ThreadPriority.BelowNormal;
myThread.Start();
}
private void ThreadedWork()
{
try
{
while (true)
{
Thread.Sleep(900000); // 15 minutes
DoWork();
}
}
catch (ThreadInterruptedException)
{
} …Run Code Online (Sandbox Code Playgroud) 我想知道操作系统中的任务调度程序如何处理休眠线程.
我的意思是,调度程序是否仍然检查休眠线程,或者在确定哪个线程在接下来的10毫秒内处于活动状态或者给定的时间长时完全跳过.
我之所以这样问,是要弄清楚一个睡眠线程是否会消耗CPU周期(尽管很少).
那么有谁知道会发生什么?
你知道从Windows到Linux有什么不同吗?
当我的会话丢失或重建我的项目时,我已经开始遇到错误,因为我的表单身份验证cookie仍然存在.
在WebForms中,我使用与需要登录的页面相关联的母版页来检查会话.
我如何在MVC中的一个位置执行此操作?我讨厌在我的控制器中的每个动作中检查会话状态.
另一方面,我也不能只应用全局过滤器,因为并非所有控制器都需要会话状态.
它可能在我的布局视图中可能吗?这是需要会话的页面唯一的共同点.
我知道内置的ASP.Net验证器带有客户端框架,但是我一直无法找到任何可以让我检查单个验证器的有效状态.
我希望它有可能,所以我希望有人在这里知道怎么做:-)
有问题的验证器是RegularExpressionValidator,我用它来确定电子邮件地址是否有效.
这是一些简短的代码:
<script>
function CheckForExistingEmail()
{
Page_ClientValidate(); // Ensure client validation
if (revEmail.IsValid) // pseudo code!
{
// Perform server side lookup in DB for whether the e-mail exists.
}
}
</script>
<asp:TextBox runat="server" id="tbEmail" onblur="CheckForExistingEmail();" />
<asp:RegularExpressionValidator id="revEmail" runat="server" ControlToValidate="tbEmail" ErrorMessage="Not a valid e-mail address" ValidationExpression="([a-zA-Z0-9_\-\.]+)@((\[[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}\.)|(([a-zA-Z0-9\-]+\.)+))([a-zA-Z]{2,4}|[0-9]{1,3})" />
Run Code Online (Sandbox Code Playgroud) c# ×4
asp.net ×1
asp.net-mvc ×1
bounce ×1
email ×1
interrupt ×1
javascript ×1
layout-page ×1
linux ×1
razor ×1
unit-testing ×1
validation ×1
visual-c++ ×1
windows ×1