我有一个ASP.NET MVC核心应用程序,我正在编写单元测试.其中一个操作方法使用用户名来实现某些功能:
SettingsViewModel svm = _context.MySettings(User.Identity.Name);
Run Code Online (Sandbox Code Playgroud)
这显然在单元测试中失败了.我环顾四周,所有建议都是从.NET 4.5到模拟HttpContext.我相信有更好的方法可以做到这一点.我试图注入IPrincipal,但它引发了一个错误; 我甚至试过这个(出于绝望,我想):
public IActionResult Index(IPrincipal principal = null) {
IPrincipal user = principal ?? User;
SettingsViewModel svm = _context.MySettings(user.Identity.Name);
return View(svm);
}
Run Code Online (Sandbox Code Playgroud)
但这也引发了一个错误.无法在文档中找到任何内容......
我有ASP.NET Core C#web应用程序.我做了一些现在使用C#7.1功能的更改.我更改了项目版本,因此编译并运行正常.但是,当我尝试发布项目时,我收到一个错误:
功能'默认文字'在C#7.0中不可用.请使用语言版本7.1或更高版本.
我看到的编译命令是:
C:...\.nuget\packages\microsoft.net.compilers\2.6.1\tools\csc.exe /noconfig /unsafe- /checked- /nowarn:1701,1702,1705,1701,1702,2008 /nostdlib+ /errorreport:prompt /warn:4 /define:TRACE;RELEASE;NETCOREAPP2_0 /errorendlocation /preferreduilang:en-US /warnaserror+:NU1605`
Run Code Online (Sandbox Code Playgroud)
正如其他地方所建议的,我安装了Microsoft.Net.Compilers(v2.6.1),但没有任何区别.
是否有专门影响发布的Visual Studio设置?
更新:看起来控制台应用程序没有这个问题.如果它成功构建,它也会成功发布.但是,Web应用程序不会发布.是否有人成功发布了具有C#7.1功能的ASP.NET Core Web应用程序?
我有使用WebPack构建的Angular2应用程序.我将WebPack从v1.8升级到v2,一切似乎都运行良好.唯一的问题是旧代码具有以下内容:
import Timer = NodeJS.Timer;
....
apptInterval: Timer;
....
this.apptInterval = setInterval(() => { ... }, 1000);
Run Code Online (Sandbox Code Playgroud)
升级后,这给了我一个错误: TS2503: Cannot find namespace 'NodeJS'.
tsconfig.json看起来像这样:
{
"compilerOptions": {
"target": "es5",
"module": "commonjs",
"moduleResolution": "node",
"sourceMap": true,
"emitDecoratorMetadata": true,
"experimentalDecorators": true,
"lib": ["es2015", "dom"],
"noImplicitAny": true,
"suppressImplicitAnyIndexErrors": true
}
}
Run Code Online (Sandbox Code Playgroud)
Angular/Webpack的文档不再具有typings.json; 但是,即使我从Webpack 1目录中复制,它也无济于事.内容是typings.json是
{
"globalDependencies": {
"jasmine": "registry:dt/jasmine#2.2.0+20160621224255",
"node": "registry:dt/node"
}
}
Run Code Online (Sandbox Code Playgroud)
有趣的是,如果我删除对NodeJS的引用,一切正常.像这样:
apptInterval: any;
....
this.apptInterval = setInterval(() => { ... }, 1000);
Run Code Online (Sandbox Code Playgroud)
如果我查看F12调试器,apptInterval的类型是ZoneTask.我确信有一种方法可以使它变得强大,但它逃脱了我.我发现的唯一建议是运行typings install dt~node …
从ASP.NET Core 2.0升级到2.1-preview2后,我收到以下错误:
Error CS1705 Assembly 'System.Data.SqlClient' with identity 'System.Data.SqlClient, Version=4.4.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a' uses 'System.Runtime, Version=4.2.1.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a' which has a higher version than referenced assembly 'System.Runtime' with identity 'System.Runtime, Version=4.2.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a'
Run Code Online (Sandbox Code Playgroud)
当我四处寻找类似的错误时,我看到很多关于csproj或json文件中引用的版本的讨论(取决于讨论的年龄).但在.NET Core中只有一个引用Microsoft.AspNetCore.App.所以,我没有办法操纵任何一个System.Data.SqlClient或的引用System.Runtime
另一个观察结果,虽然大多数错误引用实际代码,例如connection.Open()有两个对不存在的文件CSC第1行的引用.
更新:如果我创建一个新项目并在那里复制有问题的代码,我没有收到任何错误.所以,显然对不匹配版本的引用是在项目的某个地方...但我无法弄清楚在哪里!
将 Angular 从 v.11 升级到 v.12 后,我收到以下警告:
警告:在项目的浏览器列表配置中请求支持 IE 11。自 Angular v12 起不推荐使用 IE 11 支持。有关更多信息,请参阅https://angular.io/guide/browser-support
我的项目中没有浏览器列表。并且在polyfill.ts与 IE 相关的所有内容中都被注释掉了。Angular 从哪里推断出这个请求?
我遇到了一个恼人的问题:以下代码在Visual Studio中发出警告.
<script type="text/javascript">
var x = <%: ViewData["param"] %>;
</script>
Run Code Online (Sandbox Code Playgroud)
警告是"预期表达".Visual Studio变得混乱,之后的所有javascript代码都会发出大量警告.当然,这是所有的警告,它在运行时完美地运行 - 但很容易错过十几个误报中的真实警告.
它在VS2008中的工作方式相同,并没有在VS2010中修复.有人知道是否有解决方法或补丁?
我有一个类似于这里描述的问题:MVC T4 MvcTextTemplateHost和自定义"控制器"T4模板,但希望,更简单.
我有一个用于ASP.NET MVC项目的自定义视图模板(View.tt,Create.tt).我无法弄清楚如何在这些视图模板中获取控制器名称.mvcHost.ControllerName和mvcHost.ControllerRootName在视图模板中都为空.但是,管道控制器名称中的某个位置是已知的,因为视图是在ControllerName文件夹中创建的.我想在模板本身中引用它.
具体来说,我想生成HTML.ActionLink("Edit", MVC.<controllername>.Edit(id))而不是HTML.ActionLink("Edit", "Edit", new {id = item.id})
是否可以在View模板中获取控制器的名称?
我试图通过jquery调用调用跨域Web服务$.ajax()该服务返回
<?xml version="1.0" encoding="utf-8"?>
<double xmlns="http://www.webserviceX.NET/">1.4248</double>
Run Code Online (Sandbox Code Playgroud)
如果我指定dataType xml(或者没有指定任何东西 - 正确猜测jquery),我会收到XML Parsing Error: no element found Location: moz-nullprincipal:{4030734c-b902-4251-9067-1d1b5b15fc72} Line Number 1, Column 1:错误(看起来没有任何东西从服务中回来).但是,如果我指定dataType jsonp或script- 我可以在firebug中看到所有内容都正确返回; 然而jquery显然试图评估结果并给我相应的错误(缺少分号或类似).
是否有jQuery的解决办法,使跨域调用和不评价它?
笔记:
基本上,我想实现以下内容:
var categories = [];
var products = // some array of product objects
products.map(function(value) {
if(categories.indexOf(value.Category === -1)) categories.push(value.Category);
});
Run Code Online (Sandbox Code Playgroud)
因此,categories数组包含唯一的产品类别列表.
我觉得应该有一个更好的方法去做,但没有想到任何事情.
如果没有,那么可能首先没有必要使用map().我可以这么简单
var categories = [];
var products = // some array of product objects
for (var i = 0; i < products.length; i++) {
if(categories.indexOf(products[i].Category === -1)) categories.push(products[i].Category);
}
Run Code Online (Sandbox Code Playgroud)
更新那些坚持认为它是"如何制作阵列唯一"问题的复制品.我看到了这个帖子,对于我的情况,我认为它不适用.我没有一系列值,我需要使其独特.我有一个对象数组,我需要构建一个唯一值数组.差异可能很微妙 - 但是要了解该主题的用例,我将构建一个非唯一的数组,然后使其唯一.似乎比我原来的解决方案更糟糕
我有一个AngularJS和Bootstrap的应用程序,虽然我不确定它是否相关.我想为必填字段定义CSS样式.我看到很多例子,如果字段class='required',例如这里:
.form-group.required .control-label:after {
content:"*";
color:red;
}
Run Code Online (Sandbox Code Playgroud)
但是,如果字段有required='required',但没有required类,是否可以这样做?
实际上,我有一个有条件地需要使用的字段,ng-required='chkChecked'虽然我也可以添加ng-class={'required': chkChecked},但如果可能的话,我宁愿避免它
更新只是为了澄清 - 如果它具有"必需"属性,无论它是否具有required类,我都要设置该字段的样式.我的初始问题可以解释为我想要在需要时设置元素的样式,但是没有必需的类.事实并非如此.抱歉.
另外,我宁愿把星号粘贴到输入字段,而不是说的标签,贴到外地本身(这可以通过以下方式实现一个红色边框上input[:required](我不知道).我曾尝试.form-group:required,但由于某种原因它没有做任何事情,虽然我<div class="form-group" required="required">在F12 看到
c# ×3
angular ×2
asp.net-mvc ×2
javascript ×2
angular12 ×1
angularjs ×1
arrays ×1
asp.net ×1
asp.net-core ×1
c#-7.1 ×1
cross-domain ×1
css ×1
css3 ×1
jquery ×1
t4 ×1
typescript ×1
unit-testing ×1
webpack ×1
xunit.net ×1