我刚刚进入Web开发(从Windows应用程序开发背景),WebMatrix似乎是一个很好的起点,因为它简单,并且因为它看起来像是完整的ASP.NET MVC开发的有用踏脚石.
然而,缺乏调试工具会有点痛苦,特别是在尝试学习Web环境中的开发基础时.
跟踪执行流程,并在页面上显示跟踪数据,似乎是一个相当基本的功能,可以获得绝对最小的调试体验,但即使这样也没有内置到WebMatrix中(或者我可能还没有找到它) ).
在单个页面中很容易设置跟踪变量,然后在页面布局中显示该变量.但是,当我需要跟踪流中其他页面(例如布局页面,_PageStart页面等)的执行时,甚至在页面构建过程中使用的C#类中,这有何帮助.
我还没有找到WebMatrix中的跟踪功能吗?或者,有没有办法实现一个可以在整个应用程序中工作的跟踪工具,而不仅仅是在一个页面中?即使是第三方产品($)也会比什么都好.
我刚刚学习ASP.NET MVC,我最近发现[RequireHttps]属性自动重定向GET请求以使用SSL,就像这样......
[RequireHttps] //apply to all actions in controller
public class SomeController
{
[RequireHttps] //apply to this action only
public ActionResult SomeAction()
{
...
}
}
Run Code Online (Sandbox Code Playgroud)
使用IIS Express作为开发服务器时,这成功地将请求重定向http://localhost:55945/... 到https://localhost/....
但是在我的开发系统上,我的项目在端口44300上使用HTTPS(这是由Visual Studio 2010自动配置的),我还没有找到任何方法告诉MVC在重定向中使用该端口号,以便它转到https://localhost:43300/...相反的要求.
我真的希望这是自动的,因为Visual Studio会自动设置SSL端口号,据我所知,这必须影响所有使用MVC3中[RequireHttps]属性的开发人员.在我寻找解决方案时,我已经看到了一些不完整的"解决方案"解决方案,但似乎没有任何东西可以肯定是"正确的方法"来解决它.
所以做"正确的方式",我要改变什么(在源代码或我的项目配置中)告诉MVC3中的[RequireHttps]属性使用我的项目配置使用的HTTPS端口?
或者,是否有一些其他完全不同且更好的"正确方法"在MVC3项目中设置SSL支持,这没有这个问题?
新的Razor视图引擎的大部分文档都在WebMatrix和ASP.NET"Web Pages"的上下文中.即使在MSDN库本身,似乎(对我来说)作为大多数Razor文档(带有Razor语法的ASP.NET网页)的根参考页面的文章本质上与ASP.NET网页绑定,并且在标题为"Microsoft WebMatrix"的文档树中的一个分支.
但是,我从其他已经阅读的内容中收集到,Razor语法也可用于ASP.NET MVC 3,它似乎与ASP.NET网页几乎没有关系.
现在我是这个领域的新手,我现在正在WebMatrix学习,所以如果我弄错了一些细节,请纠正我,但我知道我也想开始学习ASP.NET MVC不久的将来,这些区别对于这种转变将是重要的.
所以我正在寻找一个明确的指南,这将使我能够准确理解我所学的哪些部分是Razor语法的一部分,哪些是ASP.NET"Web Pages"的一部分.
另外,我需要澄清WebMatrix和ASP.NET网页之间是否有任何区别.我知道WebMatrix基于"网页",但目前尚不清楚我所学的一些内容是否是WebMatrix的一部分,或者(如我所料)WebMatrix只是围绕"网页"的IDE,没有多少其他的UI添加.
那些人可以在这些方面提供一些清晰度吗?
(顺便说一句,我错过了什么(其他),或者"网页"是他们可能为这个新系统提出的最令人困惑的名字?)
我想我可能在WebMatrix的PageData中发现了一个错误,但我不确定.它涉及如何将数据从部分页面传递回调用页面.
在WebMatrix文档(教程,例如" 3 - 创建一致外观 "和示例代码)中,建议使用PageData作为在页面之间传递数据的机制(例如,从内容页面到布局页面,或者到部分页面) .
但是我发现这并不总是以另一种方式工作,将数据从部分页面传递回调用页面.在部分页面中修改或添加PageData中的条目似乎不会返回到调用页面.
从最简单的可能示例开始,在测试页面中我们可能会这样:
@{
PageData["test"] = "Initial entry";
}
<p>Before calling the partial page, the test value is @PageData["test"]</p>
@RenderPage("_TestPartial.cshtml")
<p>After returning to the calling page, the test value is @PageData["test"]</p>
Run Code Online (Sandbox Code Playgroud)
在_TestPartial.cshtml页面中我们可能会这样:
@{
PageData["test"] = "Modified entry";
}
<p>In the partial page, the test value has been modified to @PageData["test"]</p>
Run Code Online (Sandbox Code Playgroud)
结果输出如下:
在调用部分页面之前,测试值为Initial entry
在部分页面中,测试值已修改为修改条目
返回调用页面后,测试值为Initial entry
因此,当您返回到调用页面时,部分页面对PageData的修改将丢失.如果我们在部分页面中向PageData添加新条目,则会出现同样的情况.它们在返回调用页面时丢失了.
我不知道这种行为是否是一个错误,或者它是否是有意的,但它让你没有一种干净的方式将数据从部分页面传递回其调用页面.还有另一种(相对干净的)方法吗?或者,如果它是一个bug,是否有解决方法?