我正在使用ASP.NET MVC 3,我需要在请求之间维护一个C#对象.它维护一些服务器端状态信息,这对于这个问题并不重要.目前,此对象被序列化为会话,然后在每个请求时被拉出.
这种方法的问题是该对象特定于会话,但我希望它特定于每个请求.因此,在浏览器中打开第二个选项卡基本上会有自己的对象,而不是与第一个选项卡共享同一个对象,因为它是同一个会话.
所以显然我需要将这个对象存储在页面上并将其与请求一起传回.我想知道最好的方法是什么.客户端不需要此对象中的信息,并且此对象中的数据不是敏感数据,因此我不打算阻止访问者查看它.我只是想知道在请求之间存储此对象的最佳方法是什么.是否有一种简单的方法可以将C#对象序列化到视图中,比如在隐藏字段(类似于Web窗体viewstate)中,然后在每个请求中将其取回?
我目前有一个ASP.NET MVC 3项目,以及一个我正计划开源的类库项目.在我这样做之前,我想稍微清理一下这个项目.我想做的一个修改是使用数据库.目前,该站点已发布到共享托管服务器,我在该服务器上设置了SQL数据库.但是,由于人们将分支项目并在本地运行它,我只想附加一个SQL Server express数据库或项目的一部分.我希望人们克隆存储库,打开项目,按F5并运行它.目前,他们必须设置SQL数据库并创建所有表和内容.
该解决方案包含两个项目:MvcUI和Domain.域是所有应用程序逻辑发生的地方.实际上,域是UI不可知的,这意味着它可以被桌面应用程序使用,就像Web应用程序一样容易.
我希望数据库成为Domain(类库)项目的一部分.我以前从未这样做过.如果有人能提供一个简单的解释,我将如何设置它,我会很激动.将数据库放在解决方案中是非常好的,因为我可以用一些基本数据预先填充它.我需要做什么才能将我的项目中的数据库作为数据库文件或什么不是?
我第一次使用实体框架,并注意到实体对象返回实体集合.
DBEntities db = new DBEntities();
db.Users; //Users is an ObjectSet<User>
User user = db.Users.Where(x => x.Username == "test").First(); //Is this getting executed in the SQL or in memory?
user.Posts; //Posts is an EntityCollection<Post>
Post post = user.Posts.Where(x => x.PostID == "123").First(); //Is this getting executed in the SQL or in memory?
Run Code Online (Sandbox Code Playgroud)
ObjectSet和EntityCollection都实现了IQueryable吗?我希望他们这样做,我知道查询是在数据源而不是在内存中执行的.
编辑:所以显然EntityCollection没有ObjectSet.这是否意味着我会更好地使用此代码?
DBEntities db = new DBEntities();
User user = db.Users.Where(x => x.Username == "test").First(); //Is this getting executed in the SQL or in memory?
Post post …Run Code Online (Sandbox Code Playgroud) 我有一个表达式,我在几个LINQ查询中使用了几次,所以我把它分成了它自己的返回表达式的方法.函数的lambda部分看起来很乱.任何人都想破解重构并使其更具可读性和/或更小?
private Expression<Func<Message, bool>> UserSelector(string username, bool sent)
{
return x => ((sent ? x.FromUser : x.ToUser).Username.ToLower() == username.ToLower()) && (sent ? !x.SenderDeleted : !x.RecipientDeleted);
}
Run Code Online (Sandbox Code Playgroud)
它正在做的快速英文描述是检查布尔值sent并检查Message.FromUser或Message.ToUser基于该布尔值.
如果用户正在查看他/她的发件箱,sent则为真,并且会看到是否x.FromUser.Username == username和x.SenderDeleted == false.
如果用户正在查看他/她的收件箱,那么它会执行相同的逻辑,但是发送是错误的,而是检查x.ToUser而x.RecipientDeleted不是.
也许这是最简单的方法,但我对一些重构持开放态度.
我真的很喜欢Davy8的答案,但我决定更进一步,用一个嵌套函数做两个表达式而不是一个表达式.现在我有以下方法:
/// <summary>
/// Expression to determine if a message belongs to a user.
/// </summary>
/// <param name="username">The name of the user.</param>
/// <param name="sent">True if retrieving sent …Run Code Online (Sandbox Code Playgroud) 我有一个使用jQuery的ajax函数,它定义了一个要调用的错误函数.当服务器上发生错误时,此错误函数将运行."jqXHR"中传递的变量之一包含一个名为responseText的属性.我想将此响应文本转储到页面上的div中,但响应文本包含完整格式的HTML文档.有没有办法使用jQuery遍历这个包含HTML的变量,就像我遍历常规DOM一样?
$.ajax({
blah blah blah...,
error: function (jqXHR, textStatus, errorThrown)
{
var errorText = $(jqXHR.responseText).find('body').html();
// The above line does not work. errorText is NULL.
$('#mainContent').html(errorText);
}
});
Run Code Online (Sandbox Code Playgroud)
我想做一些像上面的代码片段,但我这样做的方式不起作用.有没有办法遍历这个变量,好像它是一个我可以用jQuery导航的DOM?
这里有一个 console.log($(jqXHR.responseText))
我知道实体框架中的导航属性必须在它们前面有虚拟关键字,否则EF不能做它的导航属性魔术.但是将虚拟关键字放在其他属性前面有什么影响呢?我最近看到一个例子,其中实体上的每个属性都是用virtual关键字声明的.如果我这样做,EF 5是否真的懒得加载每个属性,或者我错过了一些关于它如何工作的东西?
我正在使用signalr在我的Web应用程序中执行一些实时事件.我试图强迫信号器使用新的websocket协议但它不会,即使我指定它.
$.connection.hub.start({ transport: 'webSockets' })
Run Code Online (Sandbox Code Playgroud)
我肯定安装了Web套接字协议,我正在运行带有IIS 8的Windows 8.
在信号器中启用Web套接字支持还需要做些什么?
我想要做的实际上非常简单,Jade模板引擎应该可以帮助我很多,但我遇到了一些障碍.
我正在构建一个使用大量半透明元素的网站,例如jsFiddle中的一个:http://jsfiddle.net/Chevex/UfKnM/
为了使容器背景半透明但保持文本不透明这涉及3个要素:
position: relativeposition: absolute具有背景颜色,高度/宽度设置为100%并且其不透明度设置为所需级别的子DIV .它非常简单,我在CodeTunnel.com上使用它非常有效.
我正在node.js中重写CodeTunnel.com,而Jade模板引擎似乎可以大大简化我一遍又一遍重复使用的这个标记.Jade mixins看起来很有希望,所以这就是我做的:
我定义了一个mixin,所以我可以在任何需要它的地方使用它.
mixin container
.container(id=attributes.id) // attributes is an implicit argument that contains any attributes passed in.
.translucentFrame
.contentFrame
block // block is an implicit argument that contains all content from the block passed into the mixin.
Run Code Online (Sandbox Code Playgroud)使用mixin,传入一个内容块:
+container#myContainer
h1 Some test content
Run Code Online (Sandbox Code Playgroud)
产生:
<div id="myContainer" class="container">
<div class="translucentFrame"></div>
<div class="contentFrame">
<h1>Some test content</h1>
</div>
</div>
Run Code Online (Sandbox Code Playgroud)到目前为止,一切都很棒!只有一个问题.我想在layout.jade模板中使用这个mixin,我希望子模板能够使用块继承.我的layout.jade文件如下所示:
doctype 5
mixin …Run Code Online (Sandbox Code Playgroud) 最终我试图改变这个:
var msg = '-m "this is a message" --echo "another message" test arg';
Run Code Online (Sandbox Code Playgroud)
进入这个:
[
'-m',
'this is a message',
'--echo',
'another message',
'test',
'arg'
]
Run Code Online (Sandbox Code Playgroud)
我不太确定如何解析字符串以获得所需的结果.这是我到目前为止:
var msg = '-m "this is a message" --echo "another message" test arg';
// remove spaces from all quoted strings.
msg = msg.replace(/"[^"]*"/g, function (match) {
return match.replace(/ /g, '{space}');
});
// Now turn it into an array.
var msgArray = msg.split(' ').forEach(function (item) {
item = item.replace('{space}', ' ');
});
Run Code Online (Sandbox Code Playgroud)
我认为这样可行,但是人类看起来像是一种变幻无常的向后完成我想要的方式.我相信你们比分割前创建一个占位符字符串要好得多.
为了编写 Git 教程,我一直在尝试使用 Git。我创建了一个分支,修改了两个分支上的文件,然后将分支合并回 master 以产生冲突。我很好奇的是为什么冲突的文件似乎既“暂存”又“未暂存”。如果我在任一位置单击文件,差异窗口将显示完全相同的信息。