当使用backbone.js和下划线的伴随模板引擎时,我注意到大多数示例model.ToJSON()在渲染时调用而不是仅仅传递model.我知道我的模板必须修改它检索数据的方式.
我想知道为什么我们从toJSON()得到什么好处?
典型例子
在典型示例model.toJSON()中,在渲染时调用.注意,为了简洁起见,我将模板作为字符串文字放入.
ToDoItemView = Backbone.View.extend({
/* other viewey stuff */
template : _.template( '<li><%=ToDoNote%></li>'),
render : function () {
var out= this.template(this.model.toJSON()); //<--JSON
$(this.el).html( out) }
return this;
}
}); //end view
Run Code Online (Sandbox Code Playgroud)
一种替代方法
我挖掘了主干0.9.2并强调了1.3.3代码.在骨干中,注意到model.toJSON()以下内容:_.clone(this.attributes).在模板渲染引擎内,我编译的模板命名传递数据obj.
在看到这些片段之后,我意识到克隆属性是没有必要的.相反,我可以直接传入我的模型(虽然模板中有一些语法更改).就像是 ...
ToDoItemView = Backbone.View.extend({
/* other viewey stuff */
template : _.template( '<li><%=obj.get('ToDoNote')%></li>'), //<--notice GET()
render : function () {
var out= this.template(this.model); //<-- look ma no json
$(this.el).html( result ) …Run Code Online (Sandbox Code Playgroud) 所以我使用MVC 2来提供来自Controller Action的一些图像.一般智慧(1,2,3)似乎是使用中的一个FileResult类型(FileStreamResult,FileContentResult或`FileContentResult').
FileResult但是,所有三个具体的都设置了Content-Disposition响应头attachment; filename{YourFileNameHere}=UTF-8.最终结果是,如果用户直接查看我的图像,而不是嵌入HTML,浏览器会显示保存对话框,而不是显示图像.我希望图像只是在浏览器中显示.
我想这就是我的问题:使用MVC 2返回图像结果的合适方法是什么,图像没有标记下载?
大家好,我正在使用MVC 3(Razor).我有以下问题:
我有一些共同的内容被分隔成局部视图.但是,不要把它放在默认位置(views/shared或views/controller-name),我需要将它放在不同的位置(views/shared/new-folder或view/controller-name/new-folder).
我试过这个:@Html.Partial("views/shared/new-folder/partial-view-name")甚至@Html.Partial("views/shared/new-folder/partial-view-name.cshtml"),但似乎MVC3只将参数视为视图名称,它完全忽略了任何路径信息.
也许我做错了什么,有人可以帮我吗?:)非常感谢你!
是否可以在.NET下运行Redis?
我理解Redis的一般用例是在进程之外,并且可能在另一台服务器上.我正在开发的应用程序需要进程内缓存和进程外缓存.我的想法是,我想在进程和进程外需求中使用相同的应用程序/库.
是否有实用的方法来访问从Message Handler/DelegatingHandler装饰控制器或操作的属性?
从图上佩德罗Felix的博客文章,它看起来像消息处理程序的正在酝酿太早,直到控制器调度信息处理器运行的信息将不可用.正确?
关于我的用例:
我正在使用Thinktecture身份模型,能够在中找到AllowAnonymous属性是有用的AuthenticationHandler.
在ASP.net应用程序中,我正在使用我编写的自定义成员资格提供程序的Login控件.我想要做的是Thread.CurrentPrincipal在用户通过身份验证后设置为我的自定义Principal对象.
我正在使用setter:Thread.CurrentPrincipal它为我设置了Principal对象,但是在所有后续线程上,这个CurrentPrincipal被默认值覆盖.
这是我的Login控件的Authenticate事件的代码:
protected void Login1_Authenticate(object sender, AuthenticateEventArgs e)
{
string username = Login1.UserName;
string password = Login1.Password;
if (Membership.ValidateUser(username, password))
{
var login = sender as Login;
var phoenixIdentity = new PhoenixIdentity("B", "Forms" , true);
var principal = new PhoenixPrincipal(phoenixIdentity);
Thread.CurrentPrincipal = principal;
AppDomain.CurrentDomain.SetThreadPrincipal(principal);
HttpContext.Current.User = principal;
e.Authenticated = true;
}
}
Run Code Online (Sandbox Code Playgroud)
例如,假设我使用用户名A登录,一切顺利......验证通过,但我使用Identity对象中的用户名B对用户进行硬编码,该对象设置为我设置为CurrentPrincipal对象的Principal 对象.
当我CurrentPrincipal在此方法结束时检查哪个用户设置为Identity时,它表示它是用户B.但是当我加载另一个页面然后检查其身份CurrentPrincipal是什么时,它表示它是用户A.
那么,如何让我的CurrentPrincipal对象在所有其他线程中保持持久性,以及此Login控件何时/何时设置CurrentPrincipalThread 的对象?
这真的是对这个问题的跟进.其中一个Simple Injector开发人员指出了一个关于Simple Injector的有用信息,我认为让它更易于访问是件好事.
那么,使用Web API 1和.NET 4.0支持Simple Injector是否有任何技术障碍?源代码很容易下载和编译.它似乎工作得很好.
我正在设计一个纯多租户数据库(一个数据库,一个模式),我想在我的大多数表中保留一个Tenant_Id作为安全措施,以确保数据不会落入错误的租户手中.看起来这需要每个表上的复合键.
例:
在单租户情况下,我会有一个主键:
Animal_Id (PK)
Animal_Type
Animal_Name
Run Code Online (Sandbox Code Playgroud)
在多租户情况下,我会为Tenant_Id添加另一个主键:
Animal_Id (PK)
Tenant_Id (PK)
Animal_Type
Animal_Name
Run Code Online (Sandbox Code Playgroud)
是否在每个表中添加一个Tenant_Id列意味着我需要在每个表中都有一个复合键,或者有一种安全的方法可以避免这种情况吗?复合键是可以的,但如果可以,我想避免使用它们.
我正在尝试让SqlDependency对象给我通知,但到目前为止我无法让它工作.
我发送的SQL查询是这样的:
SELECT [SocialMedia].[dbo].[Items].[Id]
FROM [SocialMedia].[dbo].[Items]
Run Code Online (Sandbox Code Playgroud)
我已经尝试了w /和没有大括号,拥有完全限定名称,只有变量名称,以及中间的所有内容.
Id是类型Guid,我没有看到任何提及他们在创建通知查询文章中不能使用SqlDependency对象
我也试过发送多个列来查看是否可行.
SELECT SocialMedia.dbo.Items.Id,
SocialMedia.dbo.Items.DateTimeCreated,
SocialMedia.dbo.Items.AuthorId
FROM SocialMedia.dbo.Items
Run Code Online (Sandbox Code Playgroud)
这也没有用.
USE [SocialMedia]
SET ANSI_NULLS ON
SET QUOTED_IDENTIFIER ON
SET ANSI_PADDING ON
CREATE TABLE [dbo].[Items](
[Id] [uniqueidentifier] NOT NULL,
[DateTimeCreated] [datetimeoffset](7) NOT NULL,
[AuthorId] [uniqueidentifier] NOT NULL,
[Source] [varchar](max) NOT NULL,
[PlaceId] [uniqueidentifier] NULL,
[FullText] [varchar](max) NOT NULL,
[Geography] [geography] NULL,
[DateTimeAdded] [datetime] NULL,
CONSTRAINT [PK_Items] PRIMARY KEY CLUSTERED ( [Id] ASC )
WITH (PAD_INDEX = OFF, STATISTICS_NORECOMPUTE = …Run Code Online (Sandbox Code Playgroud) 当我尝试导入一个看起来像这样的模板时,我似乎遇到了使用backbone.js/underscore.js的砖墙:
<script type="text/template" id="overview_template">
<div>
Sample text
</div>
</script>
Run Code Online (Sandbox Code Playgroud)
错误如下:
Uncaught TypeError: Object #<HTMLDivElement> has no method 'html' navigation.js:356
Backbone.View.extend.render navigation.js:356
Backbone.View.extend.initialize navigation.js:351
g.View backbone-min.js:33 d backbone-min.js:38
(anonymous function) navigation.js:379
f.Callbacks.n jquery-1.7.1.min.js:2
f.Callbacks.o.fireWith jquery-1.7.1.min.js:2
e.extend.ready jquery-1.7.1.min.js:2 c.addEventListener.B
Run Code Online (Sandbox Code Playgroud)
触发错误的代码this.el.html(template);如下:
var OverviewView = Backbone.View.extend({
el: $('#overview_container'),
initialize: function() {
this.render();
},
render: function() {
var template = _.template( $("#overview_template").html(), {} );
this.el.html(template);
},
defaults: {
tip_of_the_day: 'open',
news: 'open',
recent_presentations: 'open'
},
events: {
"click .overview_subsection_header": "toggleSubsection"
},
toggleSubsection: function …Run Code Online (Sandbox Code Playgroud) backbone.js ×2
c# ×2
asp.net ×1
database ×1
identity ×1
javascript ×1
multi-tenant ×1
principal ×1
redis ×1
security ×1
sql ×1