新的Azure网站与ASP.NET MVC应用程序的传统Azure Web角色之间存在哪些重大差异?我选择"网站"而不是"网络角色"的原因是什么?反之亦然?
让我们假设在任何一种情况下我都需要相同的容量(例如2个小实例).除了网站在预览期间有33%的临时折扣这一事实外,价格似乎具有可比性.
对于使用Web角色有困难或不可能的"网站",我能做些什么吗?例如,使用"网站"将多个网站放在一组虚拟机中变得容易吗?我是否会因"网站"与"网络角色"而失去任何东西?能够微调IIS吗?能否在本地使用缓存服务?
将视图特定的javascript文件放在ASP.NET MVC应用程序中的最佳位置(哪个文件夹等)是什么?
为了保持我的项目井然有序,我真的很想能够将它们与视图的.aspx文件并排放置,但是我没有找到一种很好的方法来引用它们而不暴露〜/ Views/Action /文件夹结构.让文件夹结构的细节泄漏真的是一件坏事吗?
另一种方法是将它们放在〜/ Scripts或〜/ Content文件夹中,但这是一个小小的烦恼,因为现在我不得不担心文件名冲突.不过,如果这是"正确的事情",我可以克服这种烦恼.
我有一个带有大量小数位的数字的viewModel.如果我的绑定看起来像这样:
<tr>
<td data-bind="text: Date"></td>
<td data-bind="text: ActualWeight"></td>
<td data-bind="text: TrendWeight"></td>
</tr>
Run Code Online (Sandbox Code Playgroud)
然后,当然,输出具有所有小数位并且非常不可读.将绑定更改为这样可以解决问题,但是非常冗长且"嘈杂":
<tr>
<td data-bind="text: Date"></td>
<td data-bind="text: ActualWeight().toFixed(1)"></td>
<td data-bind="text: TrendWeight().toFixed(1)"></td>
</tr>
Run Code Online (Sandbox Code Playgroud)
注意,这是一个小片段,必须添加.toFixed(1)每个我绑定一个数字的位置导致比这里显示的更加凌乱的标记.
对于除数字之外的所有内容,覆盖toString一直是我控制输出内容的有效方法.有关告诉敲门的方法的任何建议,在我的页面的某些中心方式中,在将数字添加到输出之前将数字转换为字符串的功能是什么?
就此而言,有一个通用的方法告诉淘汰赛如何格式化任何类型的值似乎是有用的.重写Date.prototype.toString可以工作,但感觉有点沉重,因为它可能会影响.toString的其他用途除了敲门之外.
背景:
这实际上是一个一般的最佳实践问题,但有关具体情况的一些背景可能会有所帮助:
我们正在为iPhone开发一个"连接"应用程序.它将通过REST服务与后端应用程序通信.为了在每次启动应用程序时不必提示用户输入用户名和密码,我们将公开一个"登录"服务,该服务在初始启动时验证其用户名和密码,并返回可用于将来Web的身份验证令牌服务请求真实数据.令牌可能有一个到期时间,之后我们会要求他们使用他们的用户名/密码重新进行身份验证.
问题:
生成此类令牌以用于身份验证的最佳做法是什么?
例如,我们可以......
这感觉它必须是一个解决的问题.
是否有一种干净的方式来公开需要基本身份验证的WCF REST服务,但我们自己处理用户名/密码的实际验证?看来,当您在配置中告诉WCF要使用基本身份验证时,它会强制您在IIS中启用基本身份验证,而IIS只能对窗口帐户执行基本身份验证.
我们发现的唯一黑客是骗取WCF并告诉它服务没有安全性,然后使用通用的IHttpModule(它有一个专有的配置文件来指示哪些URL具有哪个身份验证/授权)在WCF堆栈之外进行身份验证要求).
似乎应该有更好的方法.有人吗?
在Visual Studio 2010中,在"工具" - >"选项" - >"文本编辑器" - >"HTML" - >"格式" - >"标记特定选项"下,可以选择配置编辑器如何自动格式化不同的HTML和ASP.NET标记.这包括如果它应该在标签之前和之后自动添加换行符等等.
是否有以类似方式配置<%%> <%=%>和<%:%>块的格式规则的位置?
特别是,我不想在<%=和<%:blocks之前强制换行.
例如,我已经将h1标记的选项配置为不在其内容周围添加换行符,并且对静态内容有效,但是当h1标记中存在<%:或<%=块时,它不起作用.我目前得到这个:
<h1>
<%: Model.Name %></h1>
Run Code Online (Sandbox Code Playgroud)
但我想这样:
<h1><%: Model.Name %></h1>
Run Code Online (Sandbox Code Playgroud)
在完美的世界中,我还想自动格式化<%%>块的内容,以确保<%及其内容之间始终存在空格.
例如,好:
<% if (something) { %>
Run Code Online (Sandbox Code Playgroud)
坏:
<%if (something) {%>
Run Code Online (Sandbox Code Playgroud)
那么,是否有任何设置埋藏在某处以控制这些格式化行为?
我对MVC比较新,所以这可能是一个新手问题.
我试图了解如何在一些看似不直接的情景中保持明确的关注点分离的最佳实践.
我现在正在看两种情况.想象一个非常基本的应用程序,让用户可以查看和编辑律师的在线个人资料.有一个动作/视图可以显示特定用户的个人资料,还有一个动作/视图可以编辑特定用户的个人资料.很容易想象一个漂亮而干净的Model类来表示用户配置文件的详细信息,可能是使用Entity Framework进行的,并映射到用户配置文件SQL表.
在用于显示用户配置文件的视图操作/视图中,在功能上,我需要一个允许用户编辑配置文件的按钮或链接.但这应该只对某些用户子集可用.例如,用户可以编辑自己的配置文件.此外,超级用户可以编辑任何人的个人资料.我的问题是视图在呈现特定配置文件时应该如何确定链接是否存在.我认为View包含逻辑以确定当前用户是否可以编辑当前配置文件是错误的.我应该向UserProfile模型类添加IsEditable属性吗?这并不悲惨,但也感觉不完全正确.我应该创建一个新的Model类来聚合UserProfile以及有关安全性的其他信息吗?
另一种情况......当编辑特定的配置文件时,可编辑的事物之一是特定律师的专业列表.可能的专业清单并不固定.如果视图想要在组合框中呈现它们,则需要从数据库中列出所有可能的特性.视图不应该直接从数据库中获取它们,所以我是否再次进行聚合模型事物并为View提供UserProfile和有效专业列表?
我想我想弄清楚的一般性问题是我应该适应创建大量特定于各个视图的小型Model类.每个类都包含该特定视图所需的较大域模型的各个不相关部分.
有没有一个规范的解决方案来限制某人可以进入textarea的字符数量?
我当然有服务器端验证,但是想通过添加客户端代码来模拟使用maxlength输入[type ="text"]获得的体验来改善用户体验,这样用户就不会看到"你的输入也是如此"如果他们启用了JavaScript,则会显示"长"错误消息.
是否可以将现有Azure Web角色(ASP.NET MVC)转换为新的Azure网站?除了创建一个新项目并将代码复制到新项目以使其看起来像旧应用程序之外,就是这样.
我正在寻找有关如何创建可在多个 MVC 3 视图上使用的可重用“控件”的最佳实践。我可以创建一个 Html 帮助程序扩展方法(以编程方式或使用 razor 中的声明性帮助程序),或者我可以创建一个部分视图。
就我而言,诀窍是我需要做的不仅仅是将一些 HTML 转储到视图调用帮助器/部分的位置。除了在该位置放置一些 HTML 标记之外,我还需要添加一些 javascript 代码以使其正常工作。通常,我会将此代码放在页面的其他位置(例如底部)。这当然不是严格要求的。另请注意,JavaScript 不是特定于控件实例的。换句话说,可以编写 JavaScript 来查找页面上控件 HTMl 标记的所有实例,并使用适当的事件等“激活”它。
我想到了几种可能性。
<script>在调用它的地方放置一个标签。这似乎是一个坏主意,因为这意味着该控件每页只能使用一次。我倾向于#4,但这是一个已解决的问题吗?有更好的第六种选择吗?
asp.net-mvc ×4
asp.net ×3
azure ×2
javascript ×2
wcf ×2
c# ×1
html ×1
iphone ×1
knockout.js ×1
razor ×1
rest ×1
security ×1
web-services ×1