在RC1中,用于创建视图的模板的行为已更改.
正如Scott Gu关于候选版本的帖子所解释的那样,新创建的aspx视图不再具有默认的代码隐藏文件.
根据反馈,我们已将视图模板更改为默认情况下没有代码隐藏文件.此更改有助于强化MVC应用程序中的视图的目的(这些应用程序纯粹是关于呈现并且不包含任何非呈现相关代码),并且对于大多数人来说,消除了项目中未使用的文件.
RC构建现在添加了C#和VB语法支持,用于从使用泛型的基类继承视图模板.例如,下面我们使用Edit.aspx视图模板 - 其"inherits"属性派生自ViewPage类型:
我真的希望能够在代码隐藏中编写特定于视图的代码来输出视图 - 特别是如果我在页面的几个部分重复了逻辑,我无法证明创建局部视图.
我的实际问题:斯科特默认说- 这意味着我可以改变这种行为,但我似乎无法看到哪里.可能吗?手动创建代码隐藏文件并改变现状是一件痛苦的事.
这也会导致另外一个问题:
附录:对于那些想知道为什么我想要代码隐藏的人来说,这是一些可能的原因.这是我所想到的几乎所有内容的累积列表.不言而喻(除此之外)您不得访问除模型中已有数据之外的任何数据.LINQ可以很好地处理模型数据,但LINQ to SQL不会!MVC适合那些应该已经知道这一点的人 - 这就是我喜欢它的原因 - 聪明人为智能人士制作.
IEnumerable<Product>,但我不认为你应该有一个HtmlHelper需要一个ProductModel.Html+dot,我真的想尽可能地减少这个列表.HtmlGenericControl该命名空间中的其他类的代码以面向对象的方式生成我的HTML(或者我有现有的代码来执行我想要移植的代码),该怎么办?我认为人们对"代码隐藏"有偏见,因为它传统上被解释为"事件处理代码"而不是"视图的另一半部分类",这就是它的本质.
视图的代码隐藏就好了.
我并不反对它使文件夹结构稍微混乱,但这就是+图标的用途.我只是希望能够使用"添加视图"创建具有代码隐藏的视图.
我开始使用Jungle Disk将文件上传到与Cloudfront发行版对应的Amazon S3存储桶.即我可以通过http:// URL访问它,我使用亚马逊作为CDN.
我面临的问题是Jungle Disk没有为文件设置"读取"权限,因此当我在浏览器中转到相应的URL时,我收到了Amazon 'AccessDenied'错误.如果我使用像BucketExplorer这样的工具来设置ACL,那么该URL现在返回200.
我真的很喜欢将文件拖到网络驱动器的简单性.JungleDisk是我发现的最好的程序,可以可靠地执行此操作而不会绊倒自己并使其感到困惑.但是它似乎没有选项使文件可读.
我真的不想去一个不同的工具(特别是如果我必须购买它)来改变权限 - 这似乎真的很慢,因为它们通常似乎遍历整个目录结构.
JungleDisk提供某种"网络访问" - 但这是一个付费功能,我不确定它是否会起作用.
S3似乎没有传播权限,这是一个真正的痛苦.
我正在考虑编写一个手动工具来遍历我的树并将所有内容设置为"读取"但如果这是其他人已经解决的问题,我宁愿不这样做.
现在我已经坚持使用IIS6 for ASP.NET-MVC(因为我无法升级到Server 2008).它似乎不知道我的RESTful URL是动态文件,并没有压缩它们.
我所有旧的.aspx文件都是压缩的(如Fiddler所示),但不是'/products/1001'URLS 的类型.
有没有办法让IIS6在IIS6中压缩我的ActionResults而不使用像ActionFilter这样的压缩.
我假设IIS7足够聪明,知道它们是动态的.
如果你能告诉我IIS6如何知道哪些文件是动态的,那么奖励积分!
我见过的甜甜圈缓存的所有例子都是这样的:
<%= Html.Substitute( c => DateTime.Now.ToString() )%>
Run Code Online (Sandbox Code Playgroud)
如果我只想要约会,那很好,但还有其他选择吗?
我知道有一个委托'MvcSubstitutionCallback',它有以下签名:
public delegate string MvcSubstitutionCallback(HttpContextBase httpContext);
Run Code Online (Sandbox Code Playgroud)
但RenderAction并RenderPartial返回void,所以我不能只是从委托方式回报他们.如何在更复杂的情况下有效地使用此回调.
将JSON传递给Flash电影和从Flash电影传递JSON的最佳方法是什么?
目前在javascript和Flash之间进行通信:
我想进入下一个级别并立即使用JSON执行此操作.
最初我只想在实例化时将JSON发送到flash电影,但后来我需要来回发送数据.
我只是想在第一时间做到这一点,并避免任何兼容性或"陷阱"问题,如果有的话.我甚至不知道我是否可以将整个对象传递给Flash,或者我是否需要将其序列化为原始JSON字符串
我有一个 LINQ 问题,这让我有点困惑。我可以看到很多替代方法来找到解决方案,但我想尝试解决问题,因为它困扰着我!
public enum AnimalType {
Cat,
Dog,
Rodent
}
var orderedAnimalTypes = new [] { AnimalType.Rodent, AnimalType.Cat };
Run Code Online (Sandbox Code Playgroud)
我有一个函数GetAnimals(AnimalType type)可以返回给定类型的所有动物。我想获取orderedAnimalTypes并查找该类型的所有动物以创建一个有序的组列表。
我想最终得到一个类型为 的对象IEnumerable<IGrouping<AnimalType, Animal>>。这是一个分组列表,其中Keyis 类型AnimalType和分组的枚举类型为 Animal。
所以我想做的是这个(在将orderedAnimalTypes列表投影到一IEnumerable组之后。
foreach (var group in groups) {
AnimalType animalType = group.Key;
IEnumerable<Animal> animals = group.ToArray();
}
Run Code Online (Sandbox Code Playgroud)
我似乎无法使用任何 LINQ 构造来做到这一点。我想我可能需要自己实现 IGrouping 才能做到这一点,但我不确定。
备择方案
IEnumerable分组。IEnumerable<IGrouping<AnimalType, Animal>>但我看不到如何获得该类型。我正在使用ASP.NET-MVC,并从我的MVC操作返回JSON或HTML。
我遇到过一些情况,我需要同时返回JSON和HTML。例如,我可能更新了购物车,并且需要返回HTML表示形式以及更新的JS对象模型。
我在SO上发现了很多有关何时返回哪种类型的响应的问题,但是没有人讨论如何同时返回两种响应。
有可靠的方法吗?必须在所有浏览器上都能正常工作。
如果没有一个好的方法,我只需要发出2个请求来获取HTML,然后获取JSON。
MicrosoftMvcJQueryValidation.js ASP.NET MVC 2用于客户端验证.
有这个文件的问题只是没有正常工作,并想知道我是否有错误的版本.
我使用的版本来自期货来源.
MicrosoftMvcJQueryValidation.js
5,626 bytes
11/17/09 10:43:12am
Run Code Online (Sandbox Code Playgroud)
我认为我的版本错误有两个原因:
1)我实际上必须调用此代码才能使验证例程正常工作.这是因为现在嵌入的默认客户端验证功能FormContext.cs是Sys.Mvc.FormValidation.enableClientValidation.
ViewContext.FormContext.ClientValidationFunction = "EnableClientValidation";
Run Code Online (Sandbox Code Playgroud)
2)jquery.validate.js中有一些代码可以执行以下操作:
this.settings.errorPlacement
? this.settings.errorPlacement(label, $(element) )
: label.insertAfter(element);
Run Code Online (Sandbox Code Playgroud)
这调用此函数MicrosoftMvcJQueryValidation.js:
errorPlacement: function(error, element) {
var messageSpan = fieldToMessageMappings[element.attr("name")];
$(messageSpan).empty();
$(messageSpan).removeClass("field-validation-valid");
$(messageSpan).addClass("field-validation-error");
error.removeClass("input-validation-error");
error.attr("_for_validation_message", messageSpan);
error.appendTo(messageSpan);
},
Run Code Online (Sandbox Code Playgroud)
问题是元素已被jQuery.validatejQuery $(element)表达式包装.
因此element.attr("name")未定义,但element[0].attr("name")有效.
我MicrosoftMvcJQueryValidation.js从微软的网站上下载了期货.`
我找不到任何其他MicrosoftMvcJQueryValidation版本 - 但我敢肯定必须有一个版本.有人可以帮忙吗?
有人在将域映射到MVC区域方面有经验吗?
这是我们的情况:
旧系统(仍然有效但很快将重定向到新商店):
www.example.com - 我们的主要网站,我们发送流量
store.example.com - 我们的商店网站是一个完全独立的网站,在谷歌索引
新系统:
www.example.com - 与以前相同的网站
www.example.com/store - 新商店网站 - 内置于ASP.NET MVC区域
由于商店是一个单独的域,谷歌会在搜索结果中为其指定一个单独的条目.我想在将来保留这个好处,但想知道是否有一个很好的方法将域(store.example.com)映射到MVC区域,或者它是否会比它的价值更麻烦.
PS.我不是想保留现有的索引 - 它是一个完全独立的商店,所以这是不可能的.我只想重定向到新商店中的相应页面.我只是试图不为了SEO目的而失去两个域的好处.
我在VisualStudio中创建了一个asp.net mvc项目,并将其发布在Github中。我注意到默认情况下该文件被忽略。ApplicationInsights.config
现在,由于缺少此文件,因此无法在克隆时编译项目。之后,我将其手动添加到存储库中,一切按预期进行。
为什么默认情况下会忽略此文件?将此文件添加到存储库是不好的做法吗?
asp.net-mvc ×7
json ×2
.net ×1
actionscript ×1
amazon-s3 ×1
code-behind ×1
compression ×1
flash ×1
git ×1
git-clone ×1
github ×1
igrouping ×1
iis ×1
iis-6 ×1
jungledisk ×1
linq ×1
permissions ×1
seo ×1