我想做这样的事情:
var taxonomyJson = JObject.FromObject(taxonomy);
return Json(taxonomyJson, JsonRequestBehavior.AllowGet);
Run Code Online (Sandbox Code Playgroud)
我已经尝试过转换taxonomyJson为JToken各种其他属性.我试过包装等等但它总是会引发错误.
当然,我可以返回taxonomyJson.ToString(),但我不太喜欢它,因为它在我的字符串周围包含一个额外的双重配额,我的JavaScript必须在调用之前将其剥离JSON.parse().
如果Json()能够处理序列化对象,为什么不能处理JObject或JToken具有JSON已经做好准备?
我正在尝试迭代ActiveRecord对象的属性.我一直在网上搜索,但我一直空白.我以为我对object.to_enum感到很热情,但是尽管这会返回一个Enumerator对象,但我仍然得到错误,说我的对象没有定义'each'.
调用object.methods给了我一堆我不想要的继承的东西.调用object.instance_variables并没有给我任何接近我所寻求的东西.我猜这不难,但我还没想到它:)有人可以帮忙吗?谢谢!
我是Spring MVC的新手,我正在学习如何测试我的控制器.我有一个简单的测试:
@Test
public void shouldDoStuff()
{
request.setRequestURI("/myCompany/123");
ModelAndView mav = controller.getSomeDatas("123", request);
assertEquals(mav.getViewName(), "company");
assertTrue(mav.getModel().containsKey("companyInfo"));
assertTrue(mav.getModel().containsKey("rightNow"));
assertEquals(mav.getModel().get("companyInfo"), "123");
}
Run Code Online (Sandbox Code Playgroud)
这是我的控制器动作:
@RequestMapping(value = "/myCompany/{companyGuid}", method = RequestMethod.GET)
public ModelAndView getSomeDatas(@PathVariable("companyGuid") String myGuid, HttpServletRequest request)
{
/*ModelAndView mav = new ModelAndView("company");
mav.addObject("companyInfo", myGuid);
mav.addObject("rightNow", (new Date()).toString());
return mav;*/
Map<String, Object> myModel = new HashMap<String, Object>();
myModel.put("companyInfo", myGuid);
myModel.put("rightNow", (new Date()).toString());
return new ModelAndView("company", "model", myModel);
}
Run Code Online (Sandbox Code Playgroud)
我在第一个断言上设置了断点.在Eclipse的Display窗口中,mav.getModel()完全返回我期望的内容:
mav.getModel()
(org.springframework.ui.ModelMap) {model={rightNow=Fri Nov 05 13:30:57 CDT 2010, companyInfo=123}}
Run Code Online (Sandbox Code Playgroud)
但是,任何访问该模型中的值的尝试都会失败.例如,我假设以下内容可行:
mav.getModel().get("companyInfo")
null
mav.getModel().containsKey("companyInfo")
(boolean) …Run Code Online (Sandbox Code Playgroud) 试图避免在这里重复.我在基类控制器中有一个动作,我不允许修改.我希望我的动作做一些检查,调用基类操作,并在渲染之前以某种方式修改结果.但我需要做的部分工作包括修改一些属性,ViewModel基类返回一个ActionResult.我看不出有什么办法让ViewModel从ActionResult,所以我可能会写一个自定义的方法,其中大部分只会模仿什么的基类是做.我强烈不愿意这样做.有什么建议?
当客户端上传文件时,可以在 中找到该文件this.Request.Files,其类型为HttpFileCollectionBase。
HttpFileCollectionBase包含HttpPostedFileBase条目。
这些对象的属性是只读的,所以我希望我可以设置一些模拟。我的模拟请求将返回一个模拟HttpFileCollection,并且该集合将包含一个模拟HttpPostedFile。该对象的属性InputStream将返回一个FileStream对象,我将使用源代码管理中的真实文件实例化该对象。
Moq?谢谢!
我有一个通过 http-only cookie 进行身份验证的 Rails API,因此我需要 CSRF 保护。据我所知,Rails 社区似乎更喜欢将 jwt auth 令牌存储在本地存储而不是 cookie 中。这避免了对 CSRF 的需要,但会将您暴露给 XSS,这就是我们选择使用 cookie + csrf 的原因。
由于社区对本地存储的偏好,似乎默认禁用 CSRF 保护。我试图以有限的成功启用它。这是我尝试处理它的方式:
module V1
class ApplicationController < ::ApplicationController
include Concerns::Authentication
include ActionController::RequestForgeryProtection
protect_from_forgery
protected
def handle_unverified_request
raise 'Invalid CSRF token'
end
after_action :set_csrf_cookie
def set_csrf_cookie
if current_user
cookies['X-CSRF-Token'] = form_authenticity_token
end
end
end
end
Run Code Online (Sandbox Code Playgroud)
在客户端,我可以看到令牌返回到 cookie 中。当我发出请求时,我还看到X-CSRF-Token标头中存在令牌。到目前为止一切看起来都很好。
但是,该verified_request?方法返回 false,因此handle_unverified_request被调用。单步执行 Rails 代码,我看到我的令牌存在于 中request.x_csrf_token,但在对照session. 我在这里想知道的一件事是我是否需要启用某些东西才能session正常工作,因为我知道会话管理在 API 模式下没有打开是默认的。但是,如果是这样的话,我有点期望访问session …
在Microsoft Unity IoC中,如果我调用Resolve<SomeType>(),我可以保证返回的对象是在当前会话期间创建的对象吗?
例如,三个用户登录,并且假设SomeType在容器中创建的对象具有针对每个用户的不同值.是否会调用Resolve返回为当前用户创建的对象?或者它会做一些愚蠢的事情,比如返回创建的最后一个?
由于一些环境问题,我自己也遇到了麻烦,我需要尽快检查一下,所以如果有人能回答这个问题,那将非常有帮助!
编辑
请原谅我,我是Unity的新手,但根据我在这里阅读的内容,似乎我应该能够在容器中注册具有唯一名称的对象,并通过该名称检索它们.那么,我不能使用会话ID或会话中持续存在的其他值来检索我的对象吗?
目标 - 在单个部署/重启中,我想创建一个新表并填充一些记录,因为会有代码更改,期望这些数据存在.
理想 - 编写实现此目的的迁移.想象一下,我已经创建了我的Foo类,生成了一个用于创建foo表grails dbm-gorm-diff ....的迁移,并使用它来运行迁移grails dbm-update.我现在有我的域类和我的数据库表.凉.
现在我将编写一个填充表的新迁移.
databaseChangeLog = {
changeSet(author: "samslotsky", id: "PopulateFooTable") {
grailsChange {
change {
new Foo(bar: 'baz').save()
new Foo(bar: 'blitz').save()
}
}
}
}
Run Code Online (Sandbox Code Playgroud)
我将把它添加到changelog.groovy
include file: 'populate-foo-table.groovy'
Run Code Online (Sandbox Code Playgroud)
grails dbm-update再次运行后,我的foo表中没有记录.这不是验证问题,因为我可以Foo从应用程序代码中创建对象.我甚至不确定如何判断我的迁移是否已执行,因为断点似乎没有在迁移中捕获.
所以我想有两个好问题要问:
我意识到我可以先创建表和域类,部署它,创建导入工具或管理界面来播种数据,然后修改代码以使用数据.我真的不想完成所有这些.我应该能够通过单一部署无缝地完成此任务,就像我在Rails中一样.
谢谢!
通常当我使用一个fields_for简单的has_many关联时,表单上的输入名称看起来像foo[bars_attributes][0][name],但在我的情况下,它没有显示为表单上的数组 - 而是我得到类似的东西foo[bars][name],当我尝试时会爆炸提交,因为它试图分配给数组的名称属性 - 我无法弄清楚与其他情况有什么不同.这是代码,显然已经简化并重命名为此场地.
我的模特:
class Foo
has_many :bars
end
Run Code Online (Sandbox Code Playgroud)
控制器:
class FooController < ApplicationController
def new
@foo = Foo.new
@foo.bars.build
@foo
end
end
Run Code Online (Sandbox Code Playgroud)
风景:
<div>
<%= form_for @foo do |f| %>
<%= f.fields_for :bars do |bar_fields| %>
<%= bar_fields.text_field :name %>
<% end %>
<div class="single_column">
<%= f.submit "Submit" %>
</div>
<% end %>
</div>
Run Code Online (Sandbox Code Playgroud)
结果标记:
<input name="foo[bars][name]" id="foo_bars_name" />
Run Code Online (Sandbox Code Playgroud) 我在我的Ionic应用程序中使用phonegap-estimotebeacons插件来定位一些信标.当它获得更新的信标信息时,我希望它更新视图,但我的列表不会更新,直到我切换到另一个选项卡然后切换回来.
这是我的视图,列出了所有找到的信标:
<ion-view view-title="Beacons">
<ion-content>
<ion-list>
<ion-item ng-repeat="beacon in beacons" type="item-text-wrap">
<span>{{beacon.macAddress}}</span>
<span>{{beacon.distance}}</span>
</ion-item>
</ion-list>
</ion-content>
</ion-view>
Run Code Online (Sandbox Code Playgroud)
这是呈现视图的控制器:
.controller('BeaconsCtrl', function($scope, Beacons) {
$scope.beacons = [];
Beacons.range($scope);
})
Run Code Online (Sandbox Code Playgroud)
然后Beacons工厂开始对信标进行测距,并在每次成功回调时更新范围:
.factory('Beacons', function() {
rangeBeacons = function($scope) {
var success = function(beaconInfo) {
$scope.beacons = beaconInfo.beacons;
};
var failure = function(errorMessage) {
alert(errorMessage);
};
EstimoteBeacons.startRangingBeaconsInRegion(
{},
success,
failure
);
};
return {
range: rangeBeacons
};
})
Run Code Online (Sandbox Code Playgroud)
从我看过的其他例子来看,看起来我的视图应该在我更新$scope对象时做出反应,但是我必须转到另一个选项卡然后返回以便我的视图更新.如果$scope修改变量,我该怎么做才能让视图更新?
更新
修改了控制器代码以显示我已尝试初始化$scope.beacons为空数组,但这没有区别.
我正在提交一份表格StoredProcedureReport,其中有很多StoredProcedureParameters.创建工作正常,但尝试更新让我不知道微软是否会认真对待.
我来自一个Rails背景,@report.update_attributes(params[:report])它将确切知道如何处理它在其中找到的任何关联数据.据我所知,这相当于.NET TryUpdateModel,看起来很有希望.首先.所以我尝试了这样的一些参数
IDGUID:d70008a5-a1a3-03d2-7baa-e39c5044ad41
StoredProcedureName:GetUsers
Name:search again UPDATED
StoredProcedureReportParameters[0].IDGUID:d70008a5-aba3-7560-a6ef-30a5524fac72
StoredProcedureReportParameters[0].StoredProcedureReportID:d70008a5-a1a3-03d2-7baa-e39c5044ad41
StoredProcedureReportParameters[0].Name:RowsPerPage
StoredProcedureReportParameters[0].Label:rows
StoredProcedureReportParameters[0].StoredProcedureReportParameterDataTypeID:a50008a5-2755-54c0-b052-865abf459f7f
StoredProcedureReportParameters[0].StoredProcedureReportParameterInputTypeID:a50008a5-2955-a593-d00f-00cd4543babf
StoredProcedureReportParameters[0].DefaultValue:10
StoredProcedureReportParameters[0].AllowMultiple:false
StoredProcedureReportParameters[0].Hidden:false
StoredProcedureReportParameters[1].IDGUID:d70008a5-a7a3-e35e-28b6-36dd9e448ee5
StoredProcedureReportParameters[1].StoredProcedureReportID:d70008a5-a1a3-03d2-7baa-e39c5044ad41
StoredProcedureReportParameters[1].Name:PageNumber
StoredProcedureReportParameters[1].Label:page was MODIFIEIIEIEIED!!!
StoredProcedureReportParameters[1].StoredProcedureReportParameterDataTypeID:a50008a5-2755-54c0-b052-865abf459f7f
StoredProcedureReportParameters[1].StoredProcedureReportParameterInputTypeID:a50008a5-2955-a593-d00f-00cd4543babf
StoredProcedureReportParameters[1].DefaultValue:1
StoredProcedureReportParameters[1].AllowMultiple:false
StoredProcedureReportParameters[1].Hidden:false
Run Code Online (Sandbox Code Playgroud)
我假设在设置了所有主键和外键时,EF会知道StoredProcedureReportParameter在执行此操作时如何更新对象:
var report = context.StoredProcedureReports.FirstOrDefault(r => r.IDGUID == reportID);
if (report != null)
{
succeeded = TryUpdateModel(report);
context.SaveChanges();
}
Run Code Online (Sandbox Code Playgroud)
现在,如果我放置一个断点context.SaveChanges(),我的report对象及其相关的StoredProcedureReportParameters外观就像我期望的那样.设置外键和主键,检查所有值.但SaveChanges引发了这个错误:
操作失败:无法更改关系,因为一个或多个外键属性不可为空.当对关系进行更改时,相关的外键属性将设置为空值.如果外键不支持空值,则必须定义新关系,必须为外键属性分配另一个非空值,或者必须删除不相关的对象.
一个在此消息的建议是,我应该指定外键属性非空值,但正如我所说,StoredProcedureReportID 有两个正确的值StoredProcedureReportParameter对象.
我读过的其他帖子涉及Update操作循环关联并将它们附加到上下文.这真的是我坚持做的吗?EF真的那么密集吗?我希望.NET专业人员能够向我展示这一点.有有比这更简单的方法.
我读过帖子说这是由于交易固定装置,但看起来我们没有使用它们.我已经阅读了其他帖子,建议我在每次测试运行之前做一些时髦的停止,重新启动和重新索引.这似乎没有帮助.
ThinkingSphinx在应用程序中运行得很好,但在测试中它表现得非常奇怪.Organization在我的规范中创建了几个模型后,我运行了一个sphinx搜索.它有两个我期待的记录,但也有很多.这很烦人,但是我添加了一个:retry_stale => true并且那些消失了,所以我对第一个查询感到满意:
(rdb:1) p Organization.search '', :retry_stale => true
[#<Organization id: 1, ein: nil, name: "Allina", created_at: "2012-09-11 15:03:04", updated_at: "2012-09-11 15:03:04", parent_id: nil, main_phone: "7867685187x894", fax: nil, email: nil, url: nil, crm_id: 1, target_market: false, notes: nil, form990_notes: nil, mec_revenue: 750000.0, legacy_id: nil, teaching_program_type_id: nil, sponsorship_type_id: nil, is_member_council_teaching_hospitals: nil, has_teaching_program: nil, is_major_academic_medical_center: nil, does_participate_in_survey: nil, status: "modified", net_revenue: nil, gross_revenue: nil, source_name: nil, source_id: nil, import_concat_key: nil, bigtime_id: nil, is_non_hc: nil, is_client: …Run Code Online (Sandbox Code Playgroud) asp.net-mvc ×5
c# ×4
actionresult ×1
android ×1
api ×1
cookies ×1
cordova ×1
crud ×1
csrf ×1
estimote ×1
fields-for ×1
file-upload ×1
grails ×1
grails-2.0 ×1
has-many ×1
java ×1
json ×1
json.net ×1
junit ×1
migration ×1
moq ×1
rspec ×1
ruby ×1
seeding ×1
session ×1
spring-mvc ×1
updates ×1
viewmodel ×1