我有一个Controller方法需要接受multipart/form-data客户端作为POST请求发送.表单数据有2个部分.一个是序列化的对象application/json,另一个是发送的照片文件application/octet-stream.我的控制器上有一个方法,如下所示:
[AcceptVerbs(HttpVerbs.Post)]
void ActionResult Photos(PostItem post)
{
}
Run Code Online (Sandbox Code Playgroud)
我可以在这里Request.File没有问题地获取文件.但是PostItem为null.不知道为什么?有任何想法吗
控制器代码:
/// <summary>
/// FeedsController
/// </summary>
public class FeedsController : FeedsBaseController
{
[AcceptVerbs(HttpVerbs.Post)]
public ActionResult Photos(FeedItem feedItem)
{
//Here the feedItem is always null. However Request.Files[0] gives me the file I need
var processor = new ActivityFeedsProcessor();
processor.ProcessFeed(feedItem, Request.Files[0]);
SetResponseCode(System.Net.HttpStatusCode.OK);
return new EmptyResult();
}
Run Code Online (Sandbox Code Playgroud)
}
电线上的客户端请求如下所示:
{User Agent stuff}
Content-Type: multipart/form-data; boundary=8cdb3c15d07d36a
--8cdb3c15d07d36a
Content-Disposition: form-data; name="feedItem"
Content-Type: text/xml
{"UserId":1234567,"GroupId":123456,"PostType":"photos",
"PublishTo":"store","CreatedTime":"2011-03-19 03:22:39Z"}
--8cdb3c15d07d36a …Run Code Online (Sandbox Code Playgroud) 我们正致力于通过Electron提供基于Web和跨平台桌面解决方案的应用程序.
由于客户的要求,桌面客户端无法利用"云"来存储数据; 所有数据都应存储在本地计算机中,或者更好的是,用户应该可以选择将数据库/数据文件保存在外部HDD上,以便同一本地网络上的另一个用户可以使用相同的数据文件.
我们一直在研究NeDB,PouchDB等,但所有这些都使用浏览器本身的Web SQL或IndexedDB来存储数据.从理论上讲,NeDB可以使用文件系统,但这似乎只适用于Node Webkit应用程序.
另一种选择当然是MongoDB,但它需要在Web服务器上设置站点.看看我们的用户如何在自己的机器上设置它,这将仅适用于一个用户,但会使他们很难共享数据(注意:假设用户几乎没有技术知识).
我们最好使用NoSQL数据库,但也会考虑基于文件的SQL数据库的选项.
想象一下,我有这个设置:
<div class="dialog">
<div class="toolbar first">Bla</div>
<div class="toolbar">Yada</div>
</div>
Run Code Online (Sandbox Code Playgroud)
和这个样式定义:
.toolbar { background-color: red; }
Run Code Online (Sandbox Code Playgroud)
我实际上想要在2个"工具栏"之间有一个小的2像素边框,所以我看到2种一般可能性,
1)为"对话框"div添加背景颜色,并为第一个"工具栏"添加边距:
.dialog { background-color: #fff }
.toolbar.first { margin-bottom: 2px; }
Run Code Online (Sandbox Code Playgroud)
2)在第一个工具栏中添加一个2px边框:
.toolbar.first { border-bottom: 2px solid #fff }
Run Code Online (Sandbox Code Playgroud)
渲染/申请的"成本"方面有什么不同吗?哪种程度更理想?
我知道这是一个非常小的例子,它可能没有什么不同,但想象一个页面有几十个这些对话框(对话?).
我Visual Studio 2010有一个解决方案Azure Service和ASP.NET MVC 3充当解决Web Role了Azure的服务.除此之外,没有其他角色附加到服务上.
从我在Visual Studio上单击发布直到启动所有实例(2)的那一刻起,每次部署到Azure分段(或生产,就此而言)环境都需要20分钟才能完成.
可以想象,这使得PITA经常发布,或者快速修复一些错误.有没有办法加快这个过程?将软件包上传到de Blob存储并从那里升级会更快吗?我将如何实现这一目标?
我觉得Azure上的在线文档还有很多不足之处.特别是在顺便排除故障时.
谢谢.
我有一个ASP.NET MVC(3)应用程序,我已经设置了Google分析.问题是每次我从Visual Studio运行时,Google脚本都会开始收集数据,这当然会扭曲真正的结果.
阻止Google Analytics收集开发环境数据的最佳方法是什么?在我想要分析的每个页面上使用丑陋的 #if 编译器指令?
什么是最佳做法?
谢谢.
asp.net-mvc development-environment google-analytics asp.net-mvc-3
我正在阅读Effective C#(第二版),它讨论了方法内联.
我理解这个原理,但是根据书中的两个例子,我看不出它是如何工作的.这本书说:
内联意味着将函数体替换为函数调用.
很公平,所以如果我有一个方法,它的电话:
public string SayHiTo(string name)
{
return "Hi " + name;
}
public void Welcome()
{
var msg = SayHiTo("Sergi");
}
Run Code Online (Sandbox Code Playgroud)
JIT编译器可能(将?)将其内联到:
public void Welcome()
{
var msg = "Hi " + "Sergi";
}
Run Code Online (Sandbox Code Playgroud)
现在,通过这两个例子(逐字逐句):
例1
// readonly name property
public string Name { get; private set; }
// access:
string val = Obj.Name;
Run Code Online (Sandbox Code Playgroud)
例2
string val = "Default Name";
if(Obj != null)
val = Obj.Name;
Run Code Online (Sandbox Code Playgroud)
这本书提到了代码,但没有进一步讨论它们如何被内联.JIT编译器如何内联这两个例子?
在我的最新项目中,Moq让我有点疯狂.我最近升级到版本4.0.10827,我注意到在我看来是一个新的行为.
基本上,当我MakeCall在我正在测试的代码中调用我的模拟函数(在本例中)时,我传入一个object(TestClass).我正在测试的代码TestClass在调用之前和之后对对象进行了更改MakeCall.一旦代码完成,我就调用Moq的Verify功能.我的期望是,Moq将记录我传入的完整对象MakeCall,可能通过深度克隆等机制.通过这种方式,我将能够验证是否MakeCall使用我希望调用它的确切对象进行调用.不幸的是,这不是我所看到的.
我试图在下面的代码中说明这一点(希望在此过程中澄清一点).
TestClass对象.它的Var财产设置为"one". mockedObject,这是我的测试主题. MakeCall方法mockedObject(顺便说一下,示例中使用的Machine.Specifications框架允许When_Testing从上到下读取类中的代码). TestClass使用Var值为"one".正如我所预料的那样,这成功了. TestClass通过重新分配Var属性来更改原始对象"two". MakeCall调用.这失败了,虽然我期待它是真的. TestClass"one"MakeCall实际上是由TestClass具有值的对象调用的"two".这成功了,虽然我最初预计它会失败. 对我来说,似乎很清楚Moq只保留对原始TestClass对象的引用,允许我改变其值而不受惩罚,对我的测试结果产生不利影响.
关于测试代码的一些注意事项. IMyMockedInterface是我嘲笑的界面. TestClass是我传递给该MakeCall方法的类,因此用于演示我遇到的问题.最后,When_Testing是包含测试代码的实际测试类.它正在使用Machine.Specifications框架,这就是为什么有一些奇怪的项目('因为','它应该...').这些只是框架调用以执行测试的委托.如果需要,应该很容易删除它们并将包含的代码放入标准函数中.我把它留在这种格式中,因为它允许所有Validate调用完成(与'Arrange,Act Assert'范例相比).只是为了澄清,下面的代码不是我遇到问题的实际代码.它只是为了说明问题,因为我在多个地方看到了同样的行为.
using Machine.Specifications;
// …Run Code Online (Sandbox Code Playgroud) 我有在ASP.NET MVC 3应用程序,返回的建议搜索行动包含和建议标记与给定的关键字:
[HttpPost]
public ActionResult Search(string query, int pg = 0)
{
var keywords = query.Split(new[] { ' ', ',', ';' },
StringSplitOptions.RemoveEmptyEntries);
var containing = (from s in _readonlySession.All<Suggestion>()
from k in keywords
where (s.Text.ToLower().Contains(k.ToLower()))
orderby s.Text
select s).Distinct();
var tagged = (from t in _readonlySession.All<Tag>()
from s in t.Suggestions
from k in keywords
where t.Text.ToLower().Contains(k.ToLower())
orderby s.Text
select s).Distinct();
var model = new SearchViewModel
{
Query = query,
Containing = containing.ToList(),
Tagged = …Run Code Online (Sandbox Code Playgroud) 这个问题可能与mu问题有关吗? https://github.com/aurelia/framework/issues/400
我有一个具有两个不同根的Aurelia应用程序,一个用于用户的loggen,另一个用于匿名用户.
我在其他Aurelia应用程序中根据此答案中的方法实现了app root 的操作.当login模块是一个没有其他路由的"隔离"模块时,这种方法非常有效,但我现在很难让它运行起来.
import {inject, useView, Aurelia} from "aurelia-framework";
import AuthService from "./services/auth-service";
@useView("app.html")
@inject(AuthService)
export class Index {
constructor(authService) {
this.auth = authService;
}
configureRouter(config, router) {
config.title = "Super Secret Project";
config.options.pushState = true;
config.map([
{ route: ["","home"], moduleId: "home", nav: true, title: "Beginscherm" },
{ route: "over", moduleId: "about", nav: true, title: "Over" },
{ route: "inloggen", moduleId: "account/login", nav: false, title: "Inloggen" …Run Code Online (Sandbox Code Playgroud) 我是狂热的TDD和BDD粉丝,但在UI测试方面做得不多.我有一个ASP.NET MVC 3应用程序与许多MSpec测试,我想使用WatiN添加演示文稿测试.
你测试什么样的东西?我是否必须为UI的初始加载编写测试,或仅针对因用户交互而更改的内容?
简而言之,在编写WatiN(和一般的UI测试)测试时,有什么好的经验法则和最佳实践?