我使用Angular Kendo UI项目将Telerik Kendo网格与Angular相结合.
我有以下标记:
<div kendo-grid="" k-options="thingsOptions" style="height: 600px;" />
Run Code Online (Sandbox Code Playgroud)
和我的控制器中的以下代码:
$scope.thingsOptions = {
dataSource: {
type: "json",
transport: {
read: "/OM/om/getAssets",
dataType: "json"
},
schema: {
model: {
id: "ProductID",
...
Run Code Online (Sandbox Code Playgroud)
这一切都正常,但我想从我的控制器强制数据源刷新我的网格.就像是
$scope.getTasks = function() {
$scope.thingsOptions.dataSource.read();
};
Run Code Online (Sandbox Code Playgroud)
这是可以从控制器做的吗?我总能做点什么
$("#taskGrid").data("kendoGrid").dataSource.read();
Run Code Online (Sandbox Code Playgroud)
在我的控制器中.但是从我的控制器中选择一个HTML元素似乎有点不对劲.
我试图更好地理解Java脚本中面向对象的技术.
我有下面的(普通)对象.
function CustomObject () {
this.size = 1;
};
CustomObject.prototype.addSize = function () {
this.size += 1;
if(this.size > 5) {
//Raise custom Event
}
};
Run Code Online (Sandbox Code Playgroud)
而我正在这样设置它.
var myObject = new CustomObject();
myObject.addSize();
// Add listener for custom event from with in my Custom Object.
// Something like this....
myObject.addEventListener("CustomEvent", handelCustomEvent, false);
function handelCustomEvent() {}
Run Code Online (Sandbox Code Playgroud)
如何在自定义对象中引发自定义事件,然后在父级中侦听该事件?在Java脚本中这种事情甚至可能吗?
我刚刚开始探索signalR,我希望能够从服务器向所有客户端发送消息.
这是我的中心
using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using SignalR;
using SignalR.Hubs;
using SignalR.Hosting.Common;
using SignalR.Hosting.AspNet;
using System.Threading.Tasks;
namespace MvcApplication1
{
public class Chat : Hub
{
public void Send(String message)
{
// Call the addMessage methods on all clients
Clients.addMessage(message);
}
}
}
Run Code Online (Sandbox Code Playgroud)
这是我的客户页面
<script type="text/javascript">
$(function () {
//Proxy created on the fly
var chat = $.connection.chat;
// Declare a function on the chat hub so the server can invoke it
chat.addMessage = function (message) { …Run Code Online (Sandbox Code Playgroud) 我有一个相当重要的标准.net MVC 4 Web API应用程序.
public class LogsController : ApiController
{
public HttpResponseMessage PostLog(List<LogDto> logs)
{
if (logs != null && logs.Any())
{
var goodLogs = new List<Log>();
var badLogs = new List<LogBad>();
foreach (var logDto in logs)
{
if (logDto.IsValid())
{
goodLogs.Add(logDto.ToLog());
}
else
{
badLogs.Add(logDto.ToLogBad());
}
}
if (goodLogs.Any())
{
_logsRepo.Save(goodLogs);
}
if(badLogs.Any())
{
_logsBadRepo.Save(badLogs);
}
}
return new HttpResponseMessage(HttpStatusCode.OK);
}
}
Run Code Online (Sandbox Code Playgroud)
这一切都很好,我有能够发送他们的日志的设备,它运作良好.但是现在我们开始担心要传输的数据的大小,我们想看一下接受使用GZIP压缩的帖子?
我该怎么做呢?是在IIS中设置还是我可以使用Action Filters?
编辑1
跟着菲利普的回答,我的想法是我需要在它到达我的控制器之前拦截请求的处理.如果我可以在Web api框架尝试将请求的主体解析到我的业务对象之前捕获请求,该请求失败,因为请求的主体仍然被压缩.然后我可以解压缩请求的主体,然后将请求传递回处理链,希望Web Api框架能够将(解压缩的)主体解析为我的业务对象.
它看起来像使用DelagatingHandler是要走的路.它允许我在处理期间,但在我的控制器之前访问请求.所以我尝试了下面这个?
public class gZipHandler : DelegatingHandler
{
protected override …Run Code Online (Sandbox Code Playgroud) 我有2台使用WiFi Direct的Android设备.在一台设备上,我可以使用WifiP2pManager该类获取有关其他设备的信息,并请求连接到另一台设备.但是,当我请求连接时,另一个设备弹出一个小窗口并询问用户是否要接受连接请求.
是否可以自动接受这些连接请求?IE无法在没有用户确认的情况下连接到其他设备?
我有以下javascript
function person() {
//private Variable
var fName = null;
var lName = null;
// assign value to private variable
fName = "Dave";
lName = "Smith";
};
person.prototype.fullName = function () {
return this.fName + " " + this.lName;
};
var myPerson = new person();
alert(myPerson.fullName());
Run Code Online (Sandbox Code Playgroud)
我试图在javascript中理解面向对象的技术.我有一个简单的人物对象,并为其原型添加了一个函数.
我期待警报有"戴夫史密斯",但我得到了"underfined underfined".为什么这样,我该如何解决?
我正在使用jQuery远程验证来检查描述是否已被使用.
Description: {
required: true,
maxlength: 20,
remote: function () {
var newDescription = $("#txtDescription").val();
var dataInput = { geoFenceDescription: newDescription };
var r = {
type: "POST",
url: "/ATOMWebService.svc/DoesGeoFenceDescriptionExist",
data: JSON.stringify(dataInput),
contentType: "application/json; charset=utf-8",
dataType: "json",
dataFilter: function (data) {
var x = (JSON.parse(data)).d;
return JSON.stringify(!x);
}
};
return r;
}
},
Run Code Online (Sandbox Code Playgroud)
我遇到的问题是,当用户没有修改文本框并返回说该描述已被使用时,会发生这种远程验证,因为它在数据库中发现了它.
那么,如果文本字段与最初的文本字段不同,是否可以仅运行远程验证?
我注意到jQuery所需的验证有一个依赖选项,但我无法让它与远程调用一起工作.
我的Logs存储库中有以下两种方法.
public IEnumerable<Log> GetAll()
{
var db = new CasLogEntities();
return db.Logs;
}
public DbSet<Log> GetAllSet()
{
var db = new CasLogEntities();
return db.Logs;
}
Run Code Online (Sandbox Code Playgroud)
唯一的区别是一个返回一个IEnumerable的Log,另一个返回一个DbSet的Log.
在我的资产控制器中,我有以下代码
var allLogs = _logRepo.GetAllSet();
var Logs = (from log in allLogs
group log by log.DeviceId
into l
select new {DeviceId = l.Key, TimeStamp = l.Max(s => s.TimeStamp)}).ToList();
Run Code Online (Sandbox Code Playgroud)
现在问题是我在group by语句中获得了巨大的性能差异,这取决于我调用哪个repo方法.
任何人都可以解释一下.我当时认为在GetAll中将DbSet转换为IEnumerable导致Query执行,因此我在一个庞大的内存集中执行该组.而当GetAllSet将查询执行推迟到"ToList()"时,因此在服务器上通过工作来执行该组.
它是否正确?还有另一种解释方法吗?
我更喜欢让GetAll返回IEnumerable,因为我对它更熟悉并且它更容易进行测试.
我有一个.net 4 MVC Web Api应用程序,我最初在visual studio 2010中构建.作为此解决方案的一部分,我有一套单元测试.
我用以下方法装饰了单元测试方法
[AspNetDevelopmentServerHost("$(SolutionDir)\\DataCollectionService", "/")]
Run Code Online (Sandbox Code Playgroud)
我的理解是"$(SolutionDir)"参数保存了解决方案目录的路径,并使测试套件更通用,因为它在多个环境中工作.这在视觉工作室2010中都很有用.
但是,当我在visual studio 2012中打开项目并尝试运行测试套件时,我收到以下错误
"消息:网站路径'$(SolutionDir)\ DataCollectionService'不存在...."
如果我把它改成确切的路径就好
[AspNetDevelopmentServerHost("D:\\CASLog\\Trunk\\DataCollectionService", "/")]
Run Code Online (Sandbox Code Playgroud)
它工作正常,虽然它不再通用.
我不确定它是否重要,但我的视觉工作室2010有重新整形,而我的视觉工作室2012没有.
有什么想法吗?
c# ×2
javascript ×2
android ×1
angularjs ×1
dbset ×1
jquery ×1
kendo-grid ×1
kendo-ui ×1
signalr ×1
signalr-hub ×1
sql-server ×1
t-sql ×1
wifi-direct ×1
wifip2p ×1