使用ASP.Net MVC 2,有没有办法在基于类的类中使用Controller类的RedirectToAction()方法?AuthorizeAttribute
public class CustomAttribute : AuthorizeAttribute {
protected override bool AuthorizeCore(HttpContextBase context) {
// Custom authentication goes here
return false;
}
public override void OnAuthorization(AuthorizationContext context) {
base.OnAuthorization(context);
// This would be my ideal result
context.Result = RedirectToAction("Action", "Controller");
}
}
Run Code Online (Sandbox Code Playgroud)
我正在寻找一种方法,在用户验证失败时将用户重定向到特定的控制器/操作,而不是将其返回到登录页面.是否可以为该控制器/操作生成重定向 URL,然后使用RedirectResult()?我试图避免仅仅对URL进行硬编码的诱惑.
我最近升级到使用ReSharper 5(目前处于测试阶段).我注意到在ASP.Net MVC项目中,ReSharper以红色突出显示控制器内的所有返回语句:

我个人认为这很烦人,因为它看起来像是一个错误.单击带下划线的文本不提供任何帮助(即灯泡).我没有看到更改此文本样式的选项Environment -> Fonts and Colors,到目前为止看起来禁用它的唯一方法是取消选中ASP.Net -> OtherRe-Sharper选项中的"启用ASP.Net MVC引用" .
这个重点是什么意思?我错过了ReSharper为我提供的一些特别的东西吗?有没有办法在ReSharper中仍然启用MVC支持时删除突出显示?
我正在使用DataAnnotations属性和ASP.Net MVC 2为我的ViewModel提供模型验证:
public class ExamplePersonViewModel {
[Required(ErrorMessageResourceName = "Required", ErrorMessageResourceType = typeof(Resources.Validation))]
[StringLength(128, ErrorMessageResourceName = "StringLength", ErrorMessageResourceType = typeof(Resources.Validation))]
[DataType(DataType.Text)]
public string Name { get; set; }
[Required(ErrorMessageResourceName = "Required", ErrorMessageResourceType = typeof(Resources.Validation))]
[DataType(DataType.Text)]
public int Age { get; set; }
}
Run Code Online (Sandbox Code Playgroud)
这似乎按预期工作(尽管它非常冗长).我遇到的问题是,正在执行的幕后模型验证与任何特定属性无关.上述模型中的一个例子是该Age属性需要是一个int.如果您尝试在表单上输入非整数值,则会出现以下(非本地化)消息时出错:
字段Age必须是数字.
如何对这些非属性验证消息进行本地化?
是否有可用的这些消息的完整列表,以便我可以确保它们都已本地化?
我将一个方法附加到我的Django模型的post_save信号.这样,无论何时修改模型,我都可以清除一些缓存的项目.
我遇到的问题是在保存模型时信号被触发两次.它不一定会伤害任何东西(代码只会优雅地错误)但它不可能是正确的.
一个简单的例子,只需将模型打印到控制台(使用开发服务器):
from blog.models import Post
from django.db.models import signals
def purge_cache(sender, **kwargs):
print 'Purging %s' % sender
signals.post_save.connect(purge_cache, sender=Post)
Run Code Online (Sandbox Code Playgroud)
这是使用Django的稳定1.1.1版本.
更新信息:
根据每个人的评论反馈,我修改了我的问题,因为现在问题是发现为什么post_save被触发两次.我现在的猜测是我的models.py代码被导入两次,并且post_save多次连接.
什么是最好的方法来弄清楚为什么它被导入/跑两次?
所有,
我可以使用以下JQuery语法重置所有表单元素:
('#myform')[0].reset();
Run Code Online (Sandbox Code Playgroud)
如何修改此选项以排除重置"选择框"值?
谢谢
我正在使用Komodo Edit 5.2来编辑html和Django模板文件.它始终在我模板的第一个标记的第一个{%block%}区域内显示单个语法错误.
例如:
{% extends "base.html" %}
{% load i18n %}
{% block title %}Hello{% endblock %}
{% block content %}
<p>Hello</p> <-- Syntax error on this single line
<p>Other lines have no errors</p>
{% endblock %}
{% block footer %}
<p>No errors here</p>
{% endblock %}
Run Code Online (Sandbox Code Playgroud)
给出的语法错误是:
Info: <head> previously mentioned
Run Code Online (Sandbox Code Playgroud)
我知道这个错误与我的<head>标签无关,因为它发生在基本模板和子模板中(并且IDE在儿童时不够聪明以处理基本模板等)所有我的html标签已正确关闭,所有内容都验证了XHTML严格.
这个论坛帖子提到了类似的问题,但没有提供任何解决方案(可能特定于Smarty语法突出显示).
有关如何解决此错误(或禁止显示)的任何想法?
有没有人有一个很好的算法来重新排序一个值数组(已经预先排序),以便它们可以显示在多个(N)列中并垂直读取?这将在.Net中实现,但我更喜欢可移植的东西,而不是一些神奇的功能.
它工作的一个很好的例子是ASP.Net CheckBoxList控件呈现为一个方向设置为垂直的表.
这是输入和输出的示例:
输入:
Columns = 4
Array = {"A","B","C","D","E","F","G"}
输出:
ACEG
BDF
谢谢!
更新(更多信息):
我想我可能需要提供一些关于我正在尝试做什么的更多信息...大多数问题来自于使用CheckBoxList的自动绑定(在这里你可以指定列和方向输出,它会输出使用jQuery/AJAX创建复选框网格的正确顺序的项目表.所以我试图使用具有指定宽度的div块的css复制该布局(在已知宽度的容器div内),因此它们包裹在N个项目(或列)之后.这也可以在表格中呈现(就像ASP一样) .Net做到了.)
一切都很好,除了顺序是水平的,当你在列表中获得大量项目时,更容易阅读垂直列.
如果数组中没有足够的项来生成偶数网格,那么它应该在网格的正确行/列中输出一个空白点.
如果一个数组没有足够的项目来制作一行,那么只需按原始顺序输出一行.
其他一些输入/输出可能是:
Columns = 3
Array = {"A","B","C","D"}
ACD
B.
Columns = 5
Array = {"A","B","C","D","E","F","G","H"}
ACEGH
BDF
Columns = 5
Array = {"A","B","C","D"}
A B C D
Django有一个unique_for_date属性,您可以在向模型添加SlugField时设置该属性.这会导致slug仅对您指定的字段的Date具有唯一性:
class Example(models.Model):
title = models.CharField()
slug = models.SlugField(unique_for_date='publish')
publish = models.DateTimeField()
Run Code Online (Sandbox Code Playgroud)
对于像ForeignKey这样的非DateTime字段,实现相同功能的最佳方法是什么?理想情况下,我想做这样的事情:
class Example(models.Model):
title = models.CharField()
slug = models.SlugField(unique_for='category')
category = models.ForeignKey(Category)
Run Code Online (Sandbox Code Playgroud)
这样我就可以创建以下网址:
/example/category-one/slug
/example/category-two/slug
/example/category-two/slug <--Rejected as duplicate
Run Code Online (Sandbox Code Playgroud)
我的想法到目前为止:
将slug和categoryid的唯一索引添加到表中.这需要Django之外的代码.当插入/更新失败时,内置管理员会正确处理吗?
覆盖模型的保存并添加我自己的验证,如果存在重复则抛出错误.我知道这会起作用,但看起来不是很干.
创建一个继承自base的新slug字段,并在那里添加unique_for功能.这似乎是最好的方法,但我查看了核心的unique_for_date代码,并且扩展它似乎不太直观.
有关最佳方法的任何想法,建议或意见?
asp.net-mvc ×3
django ×3
.net ×1
checkbox ×1
forms ×1
javascript ×1
jquery ×1
komodo ×1
komodoedit ×1
list ×1
localization ×1
python ×1
reset ×1
resharper ×1
signals ×1
slug ×1
sorting ×1