我试图根据不同的标准缓存导航菜单的各个部分.
例如,新闻和文章需要在持续时间内刷新,而登录和配置文件应该基于每个用户进行缓存.
我正在考虑两种选择 - 是否有人能够对我们各自的利弊有所启发?如果可能的话,建议采取更好的方法!
选项1.
只需将所有必需的html缓存为数据缓存中的字符串.必要时手动检查用户差异.
我(也许是错误的)想象这将是最需要实现的工作,但也是缓存不同部分的最有效方式.
选项2.
为菜单的每个部分安装一个具有不同子操作的NavigationController.(我们可以根据需要对每个子操作应用不同的outputCacheProfile.)
但这需要我们为导航菜单的每个部分调用单独的RenderAction.由于对Phil Haack的一篇博文发表评论,我对此感到担心:
[渲染操作]非常类似于发出另一个请求,因为我们需要运行路由以确保我们有适当的路由数据和上下文来调用操作方法.所以每次调用RenderAction都会加起来.
完整帖子在这里:http://haacked.com/archive/2009/11/18/aspnetmvc2-render-action.aspx
我有一个ASP.NET MVC应用程序,它具有.asmx Web服务
我编写了一个动作过滤器属性,我想在Web服务上的Web方法上使用,检查UserID和Password的Request标头,如果无效或不存在则抛出未经授权的响应代码.
但是,他们似乎没有被召唤!断点不会受到打击.
首先,使用MVC属性是一种可接受的方式来授权在ASMX Web服务上调用的Web服务吗?
其次,是否有更好/更有效的方式来授权Web服务方法调用?
我访问了我们的Team Foundation Service页面,发现了一个很棒的新功能:
新团队项目+ Git
这是个好消息.我们在Team Foundation Service和Git中有项目.不是因为我喜欢Git.我对它的功能印象非常深刻,但从未对其界面感到满意.也就是说,Git是开源的公认标准,我喜欢能够通过TFS管理我的Git Repos的想法.充分利用两个世界(我希望).
我能够在Git中创建一个测试项目并且很兴奋.
问题:对于所有网站搜索,谷歌搜索,戳戳,刺激,我无法弄清楚如何将现有的 Git项目导入TFS.
我们有一个项目,如果Views的.cshtml文件中有任何错误,我们希望构建视图以生成编译时错误.
不过,编译时间大幅增加:
MvcBuildViews = true 需要62秒MvcBuildViews = false 需要9秒这是可以接受的吗?因为增加是非常激烈的,我们不能忍受等待这样的编译时间.我们可以用任何方式改进这样的编译吗?
到目前为止,该项目包含130个视图和部分视图(.cshtml文件).这被认为是大/中/小?
我一直在互联网上试图找出为什么我的自定义AuthorizeAttribute在我的MVC WebApi中不起作用.我见过人们在SO上询问这类事情但是没有什么能帮助我解决我的问题:
[AttributeUsage(AttributeTargets.Method, AllowMultiple = false,
Inherited = false)]
public sealed class CustomAuthorization : AuthorizeAttribute
{
//...
protected override bool AuthorizeCore(HttpContextBase httpContext)
{
// custom auth logic, returns true if authorized, false otherwise
}
}
Run Code Online (Sandbox Code Playgroud)
我正在延伸System.Web.Mvc而不是System.Web.Http.但是,我AuthorizeCore(HttpContextBase httpContext)永远不会被召唤.
我的类中有一个构造函数,CustomAuthorization它接受params string[]一个特定操作所需的自定义权限的名称,例如:
[CustomAuthorization("Some Permission")]
[System.Web.Http.HttpGet]
public CustomResponse SomeAction()
{
//...
}
Run Code Online (Sandbox Code Playgroud)
我希望实现的是每当请求使用该[CustomAuthorization]属性修饰的动作时都会触发我的授权代码.如果授权失败,我还希望能够返回更具描述性的auth失败消息.不只是:
{"Message":"Authorization has been denied for this request."}
Run Code Online (Sandbox Code Playgroud)
我相信这涉及到覆盖HandleUnauthorizedRequest但是我如何才能提供我自己的JSON响应将序列化的对象?
总而言之,即使我用我的[CustomAuthorization]属性修饰动作,框架也不会调用我的授权代码.它只是直接执行操作中的代码.
其次,如何实现未经授权的响应来序列化自定义JSON对象?
感谢您提前的帮助,非常感谢!
c# asp.net-mvc authorize-attribute asp.net-mvc-4 asp.net-web-api
我有以下设置 web.config:
<appSettings>
<add key="ClientValidationEnabled" value="true"/>
<add key="UnobtrusiveJavaScriptEnabled" value="true"/>
</appSettings>
Run Code Online (Sandbox Code Playgroud)
我没有使用任何客户端验证.
我应该设置这些false还是可以删除这两个条目?
我想让具有UserTest实体的Exams和Test实体具有等于"0"的UserId或提供的值.我有很多建议,但到目前为止还没有任何建议.一个建议是从获取UserTest数据开始,另一个解决方案是从获取考试数据开始.当我使用UserTests作为源起点时,这就是我所拥有的.
我有以下LINQ:
var userTests = _uow.UserTests
.GetAll()
.Include(t => t.Test)
.Include(t => t.Test.Exam)
.Where(t => t.UserId == "0" || t.UserId == userId)
.ToList();
Run Code Online (Sandbox Code Playgroud)
当我检查_uow.UserTests与调试它是一个存储库,当我检查dbcontext的configuration.lazyloading,然后它被设置为false.
这是我的课程:
public class Exam
{
public int ExamId { get; set; }
public int SubjectId { get; set; }
public string Name { get; set; }
public virtual ICollection<Test> Tests { get; set; }
}
public class Test
{
public int TestId { get; set; }
public int …Run Code Online (Sandbox Code Playgroud) 我正在使用jquery ui对话框,其中一个按钮导致ajax调用需要几秒钟,所以我想在我点击它之后禁用按钮,直到ajax调用返回(然后我将启用它).
从谷歌搜索,我看到其他几个问这个问题,但答案似乎非常过时和hacky(基于非常旧版本的jquery ui).所以我希望现在有更优雅的方式来做到这一点
如何在jquery ui对话框上以编程方式禁用或启用按钮?
javascript asp.net-mvc jquery jquery-ui-dialog asp.net-mvc-4
当我碰到这个时,我正在浏览角度文档:
https://github.com/angular/angular.js/blob/master/src/ng/directive/input.js#L1556
请注意 this.$viewValue = Number.NaN;
不仅在这个文档中,而且在其他角度文档中也是如此.
这样做的优点/缺点是什么,而不是将其设置为undefined或null?
我们正在尝试使用一个Ajax(jQuery)调用向ASP应用程序发送多个表单.
我们使用以下jQuery代码:
var formContainer = {
Form1 : form1.serialize(),
Form2 : form2.serialize()
}
$.ajax({
type: "POST",
url: '@Url.Action("CreateModel", "Controller")',
data: formContainer,
success: function (result) { }
});
Run Code Online (Sandbox Code Playgroud)
在服务器上,我们在Request.Form属性中收到以下内容:
Key : Value
Form1 : All serialized form elements for Form1
Form2 : All serialized form elements for Form2
Run Code Online (Sandbox Code Playgroud)
通常我们使用以下方法,因此ASP自动创建具有正确属性值的对象:
public ActionResult CreateModel(ClassForForm1 obj)
Run Code Online (Sandbox Code Playgroud)
但由于这两种形式是一起发送的,因此模型绑定器无法绑定和构建类.因此,对于此操作,我们希望模型构建器使用Request.Form ["Form1"]中的值.
我们不能使用自定义模型绑定器,因为我们使用extern库(DevExpress,他们在此之上编写了自己的实现).
我们使用MEF框架来添加功能(这些功能在视图中添加为表单).出于这个原因,我们不知道后端会有什么期望.因此编写包装器ViewModel是不可接受的.
处理其他表单数据的功能将在其他模块中进行处理.
欢迎任何解决方案!
提前致谢.
asp.net-mvc ×8
asp.net ×4
javascript ×3
c# ×2
jquery ×2
ajax ×1
angularjs ×1
asmx ×1
azure-devops ×1
caching ×1
git ×1
linq ×1
nan ×1
null ×1
tfs ×1
tfs2012 ×1
undefined ×1
validation ×1
web-services ×1