我一直认为默认情况下,带有类类型的方法参数作为引用参数传递.显然情况并非如此.在C#中考虑这些单元测试(使用MSTest).
[TestClass]
public class Sandbox
{
private class TestRefClass
{
public int TestInt { get; set; }
}
private void TestDefaultMethod(TestRefClass testClass)
{
testClass.TestInt = 1;
}
private void TestAssignmentMethod(TestRefClass testClass)
{
testClass = new TestRefClass() { TestInt = 1 };
}
private void TestAssignmentRefMethod(ref TestRefClass testClass)
{
testClass = new TestRefClass() { TestInt = 1 };
}
[TestMethod]
public void DefaultTest()
{
var testObj = new TestRefClass() { TestInt = 0 };
TestDefaultMethod(testObj);
Assert.IsTrue(testObj.TestInt == 1);
}
[TestMethod]
public …
Run Code Online (Sandbox Code Playgroud) 我知道几个LINQ语句将导致EF评估并将结果从DB返回到内存. .ToList()
是一个.有没有人有完整的声明列表?
不确定......
.SingleOrDefault()
.Union()
Run Code Online (Sandbox Code Playgroud)
编辑:希望我能接受所有这些答案.大家好消息!
问题:有没有办法使用Ninject将依赖项注入我的MVC模型?
首先,我是MVC和DI(以及stackoverflow,btw)的新手,所以我想确保我正在走这条问题的正确道路.几天来我一直在谷歌搜索答案,但我找不到一个干净的解释......我正在使用C#,. NET4,MVC3,Ninject和VS2010.
这是一个场景:我有一个新的用户表单,用户可以在其中设置登录,角色和设置其他配置文件数据.当这个提交时,我需要将登录信息保存到MembershipProvider,RoleProvider的角色等等......它有点毛茸茸,因为我根据我的项目要求使用双提供程序(Active Directory /本地数据库),因此,在确定要保存到哪个提供程序时,如果用户已经存在,是否允许自我识别任何角色,还有一些逻辑,等等.
我觉得这个逻辑应该放在我的模型上的.Save()方法中.但是,我需要将我的提供者的实例注入到我的模型中,而Ninject似乎没有注入模型(至少不使用NuGet包附带的默认设置).因此,我的初步问题.
我可以想到一些替代方案......
那么...... 有没有办法让Ninject模型或者我需要重新考虑因为我是新手吗?
我正在使用带有Razor和C#的ASP.NET MVC3.我正在制作各种表单构建器,所以我有一个具有以下对象集合的模型:
public class MyFormField
{
public string Name { get; set; }
public string Value { get; set; }
public MyFormType Type { get; set; }
}
Run Code Online (Sandbox Code Playgroud)
MyFormType只是一个枚举,告诉我表单字段是复选框,文本框,文件上传,还是其他什么.我的编辑器模板看起来像这样(请参阅注释):
〜/查看/ EditorTemplates/MyFormField.cshtml
@model MyFormField
@{
switch (Model.Type)
{
case MyFormType.Textbox:
@Html.TextBoxFor(m => m.Value)
case MyFormType.Checkbox:
@Html.CheckBoxFor(m => m.Value) // This does not work!
}
}
Run Code Online (Sandbox Code Playgroud)
我尝试m.Value
在CheckBoxFor()的lambda表达式中转换/转换为bool,但是这引发了错误.我只是手动构造一个复选框输入,但CheckBoxFor()似乎做了两件我似乎无法复制的事情:
有没有人知道在字符串上使用CheckBoxFor()的方法,或者手动复制其功能的方法,以便我可以使这个工作?
我有一个表单,我想要根据按下的提交按钮需要不同的字段.示例:如果按下"提交按钮1",则需要字段A,但如果按"提交"按钮2,则只需要字段B.如果我仍在使用Web表单,则会为每个按钮/验证器组合分配不同的"验证组". 有没有办法在MVC中执行此操作,最好是在模型上使用数据注释? 我宁愿用单一解决方案实现客户端和服务器验证,但我会采取我能得到的...
提前致谢!
基本上,我想要一个Html助手(类似的东西@Html.MyEditor(m => m.Property)
)来产生这个:
<div class="editor-label">
@html.LabelFor(m => m.Property)
</div>
<div class="editor-field">
@html.EditorFor(m => m.Property)
@html.ValidationMessageFor(m => m.Property)
</div>
Run Code Online (Sandbox Code Playgroud)
唯一的问题是我似乎无法访问Html.EditorFor()
我自己的帮助器中的任何其他扩展方法.示例尝试:
@helper Edit(this System.Web.Mvc.HtmlHelper<Spartacus.ViewModels.NewTaskItemModel> html)
{
<div class="editor-label">
@html.LabelFor(m => m.Property)
</div>
<div class="editor-field">
@html.EditorFor(m => m.Property)
@html.ValidationMessageFor(m => m.Property)
</div>
}
Run Code Online (Sandbox Code Playgroud)
我也尝试了扩展方法语法:
public static string DatePickerFor<TModel, TProperty>(this HtmlHelper<TModel> html, Expression<Func<TModel, TProperty>> expression)
{
var sb = new StringBuilder();
sb.AppendLine("<div class=\"editor-label\">");
sb.AppendLine(html.LabelFor(expression));
sb.AppendLine("</div>");
sb.AppendLine("<div class=\"editor-field\">");
sb.AppendLine(html.EditorFor(expression));
sb.AppendLine(html.ValidationMessageFor(expression));
sb.AppendLine("</div>");
return sb.ToString();
}
Run Code Online (Sandbox Code Playgroud)
在上述两次尝试中,LabelFor,EditorFor和ValidationMessageFor抛出编译错误("无法找到").
有人知道这样做的方法吗?提前致谢!
据我所知,MVC中关注点分离的"正确"结构是为您的视图构建视图模型,并为您选择的存储库中的数据模型提供独立的数据模型.我开始尝试使用MongoDB,并且我开始认为在使用无架构的NO-SQL样式数据库时这可能不适用.我想将此场景呈现给stackoverflow社区,看看每个人的想法是什么.我是MVC的新手,所以这对我来说很有意义,但也许我忽略了一些......
以下是我讨论的示例:当用户想要编辑他们的个人资料时,他们会转到UserEdit视图,该视图使用下面的UserEdit模型.
public class UserEditModel
{
public string Username
{
get { return Info.Username; }
set { Info.Username = value; }
}
[Required]
[MembershipPassword]
[DataType(DataType.Password)]
public string Password { get; set; }
[DataType(DataType.Password)]
[DisplayName("Confirm Password")]
[Compare("Password", ErrorMessage = "The password and confirmation password do not match.")]
public string ConfirmPassword { get; set; }
[Required]
[Email]
public string Email { get; set; }
public UserInfo Info { get; set; }
public Dictionary<string, bool> Roles { get; set; }
}
public class …
Run Code Online (Sandbox Code Playgroud) 我设置和MVC 4应用程序并添加了对我们的Azure AD服务器的身份验证,如下所述:http://msdn.microsoft.com/en-us/library/windowsazure/dn151790.aspx
身份验证按预期工作.但是,我没有默认任何角色.应该创建几个AD组,我想使用它们通过MVC中的[Authorize]属性来限制应用程序.
我真的找不到一个好的地方,甚至开始搞清楚这一点.任何人都可以给我一个大纲或指向我一个很好的教程吗?
我应该提一下,我不是Azure帐户的管理员,因此如果需要进行任何设置,我需要告诉管理员该怎么做.
我正在尝试在 Powershell 中执行简单的并行操作。我正在使用 PoshRSJobs 进行多线程处理,尽管我也尝试过 Invoke-Parallel 来解决同样的问题。我需要在作业的脚本主体中调用几个我自己的函数,但这不允许我模拟这些函数以进行单元测试(它们最终成为原始的非模拟函数)。此时,我只是想断言它们被调用的次数是正确的。
这是原始类(导入模块的功能无关 - 实际实现当前返回测试字符串)...
Import-Module $PSScriptRoot\Convert-DataTable
Import-Module $PSScriptRoot\Get-History
Import-Module $PSScriptRoot\Get-Assets
Import-Module $PSScriptRoot\Write-DataTable
function MyStuff (
param(
[string]$serverInstance = "localhost\SQLEXPRESS",
[string]$database = "PTLPowerShell",
[string]$tableName = "Test"
)
$assets = Get-Assets
$full_dt = New-Object System.Data.DataTable
$assets | Start-RSJob -ModulesToImport $PSScriptRoot\Convert-FLToDataTable, $PSScriptRoot\Get-FLHistory {
$history = Get-History $asset
$history_dt = Convert-DataTable $history
return $history_dt.Rows
} | Wait-RSJob | Receive-RSJob | ForEach {
$full_dt.Rows.Add($_)
}
Write-DataTable $serverInstance $database $tableName $full_dt
}
Run Code Online (Sandbox Code Playgroud)
这是 Pester 测试...
$here = Split-Path -Parent $MyInvocation.MyCommand.Path …
Run Code Online (Sandbox Code Playgroud) 因此,忽略我们应该使用NoSQL数据库这一事实 - 客户端基础架构要求正在逐渐增加.
我们的数据显然属于非关系模型,但我们必须使用SQL Server 2014来实现持久性.有没有办法将库用于RavenDB或MongoDB与SQL Server之间的持久性?例如,将JSON或BSON存储在SQL Server表中,但使用Mongo或Raven查询和序列化它?
我们最初只是将JSON数据存储在一个列中,但我认为必须有一个更优雅的解决方案.我看到RavenDB支持SQL Server复制,但看起来它不能用于其主要持久性组件.
我们正在运行一个C#ASP.NET MVC Web应用程序.前端是一个KnockoutJS SPA,所以它很乐意绑定到JSON数据.
c# ×5
asp.net-mvc ×4
mongodb ×2
.net ×1
azure ×1
linq ×1
mocking ×1
ninject ×1
nosql ×1
pester ×1
powershell ×1
ravendb ×1
razor ×1
reference ×1
sql-server ×1
validation ×1