我正在编写Web API控制器,现在我有以下代码:
public class PicklistsController : ApiController
{
private readonly IPicklistRepository _repository;
public PicklistsController(IPicklistRepository repository)
{
_repository = repository;
}
public HttpResponseMessage GetPicklistValues(string entityName, string fieldName)
{
if(_repository.Exists(entityName, fieldName))
return Request.CreateResponse(HttpStatusCode.Accepted, _repository.Get(entityName, fieldName));
return new HttpResponseMessage(HttpStatusCode.NotFound);
}
}
Run Code Online (Sandbox Code Playgroud)
我正在尝试测试此方法,我真正想要做的就是验证当存储库找到这些值组合时,HttpResponseMessage包含POCO PicklistItem中的值.作为这个框架的新手,我不太了解HttpResponseMessage的内部工作原理,我在这个网站上发现并通过一般的谷歌搜索告诉我在其内容上使用各种ReadAsync方法,但我真的不想要如果我可以避免它,请使用async.我真的只想验证当我返回时,我填充到我正在返回的对象中的东西是在对象中.这是我到目前为止的单元测试(使用JustMock设置存储库,Target是CUT):
public void Returns_Picklist_Item_JSON_When_Results_Exist()
{
Repository.Arrange(repo => repo.Exists(EntityName, FieldName)).Returns(true);
const int value = 2;
const string label = "asdf";
var mynewPicklistItem = new PicklistItem() { Label = label, Value = value };
Repository.Arrange(repo => repo.Get(EntityName, FieldName)).Returns(Enumerable.Repeat<PicklistItem>(mynewPicklistItem, 1));
var response = Target.GetPicklistValues(EntityName, …Run Code Online (Sandbox Code Playgroud) 我有这样一个数组:
var items = [
{name: 'popcorn', category: 'snacks'},
{name: 'nachos', category: 'snacks'},
...
{name: 'coke', category: 'drinks'}
];
Run Code Online (Sandbox Code Playgroud)
我想得到一个按照项目数量排序的类别列表(大多数项目排在第一位):
['snacks', 'drinks']
Run Code Online (Sandbox Code Playgroud)
我是这样做的:
var categories = _.chain(items)
.countBy(function (i) { return i.category })
.pairs()
.sortBy(function (c) { return -c[1] })
.map(function (c) { return c[0] })
.value();
Run Code Online (Sandbox Code Playgroud)
所以结果countBy是一个对象,我必须使用pairs它将它转换为一个数组数组,以便对它进行排序.
我想知道是否有更简单的方法来做到这一点?内置功能?
我需要在ASP.NET MVC 3中创建自定义授权.在应用程序内部,授权在5个表中定义:用户,组,用户组,权限,grouprights.用户可以属于多个组,每个权限也可以分配给多个组.为每个控制器操作分配一个RightID.
内置授权无法容纳此设置,因此我尝试创建自定义的AuthorizeAttribute.覆盖AuthorizeCore时,我意识到我无法访问控制器名称和操作名称.
我可以以某种方式要求路由器解析AuthorizeCore中的Request.RawUrl以获取控制器和操作名称吗?或者还有另一种方法可以做我想要的吗?
我正在使用ASP.NET MVC 3.我有一个控制器动作,返回一个PDF文件,如下所示:
Public Class ReportController
...
Function Generate(id As Integer) As ActionResult
...
Return File(output, "application/pdf", "something.pdf")
' "output" is a memory stream
End Function
Run Code Online (Sandbox Code Playgroud)
代码有效,但Firefox不会在选项卡中显示结果,结果可以使用Adobe Reader下载或打开.
我知道Firefox可以在选项卡中显示PDF,因为我可以谷歌一些PDF,点击链接,PDF将在选项卡中打开.
如何设置操作以便PDF将在选项卡中打开?
是否可以在指令中创建私有函数?我需要在指令中执行一个相当复杂的过程来填充指令的模板.
像这样的东西(HTML):
<textarea the-result="data">
</textarea>
Run Code Online (Sandbox Code Playgroud)
使用Javascript:
angular
.module("MyModule")
.directive("theResult", [function () {
return {
scope: {
theResult: "="
// calculatestuff = function(d){ // ... } can't put it here (error)
},
template: ' ... '
+ '{{calculatestuff(theResult.someproperties)}}'
+ ' ... '
}
}])
Run Code Online (Sandbox Code Playgroud)
我在哪里可以放calculatestuff?
此查询产生错误No value given for one or more required parameters:
using (var conn = new OleDbConnection("Provider=..."))
{
conn.Open();
var result = conn.Query(
"select code, name from mytable where id = ? order by name",
new { id = 1 });
}
Run Code Online (Sandbox Code Playgroud)
如果我将查询字符串更改为:... where id = @id ...,我将收到错误:Must declare the scalar variable "@id".
如何构造查询字符串以及如何传递参数?
我想在组件中的HTML元素上调用scrollIntoView.
在angular.js 1中我可以在控制器中做这样的事情:
var element = $window.document.getElementById(id);
element.scrollIntoView({ behavior: "smooth", block: "start" });
Run Code Online (Sandbox Code Playgroud)
如何在角度2+中做同样的事情?
在 Visual Studio Code 中,当您按下ALT SHIFT F格式化 HTML 文档时,VS Code 会将太长的一行包装成多行。
我认为 VS Code 在换行之前让行长得太长。VS Code 中是否有设置告诉它在特定行长后换行?
这个问题不是硬包装问题的重复。这是关于格式化文档过程中的包装。
angular ×1
angularjs ×1
asp.net-mvc ×1
c# ×1
dapper ×1
elmah ×1
oledb ×1
pdf ×1
unit-testing ×1