我是使用ASP.NET MVC开发Web应用程序的新手。 事实上,无论技术如何,我都是开发Web应用程序的新手。 目前,我正在开发一个项目,以更好地了解ASP.NET MVC框架。 在阅读SO和互联网上的其他地方时,似乎一致认为视图不应直接与业务对象(即实现业务逻辑的对象和包含关联属性的对象)直接相关。 相反,应该使用视图模型。 但是,这引起了一些问题: 我在哪里放我的validation码? 我需要添加代码来映射业务对象和视图模型。 事实上,这似乎相当麻烦,我还没有真正看到有人正确地解释为什么传递业务对象到视图是一个坏主意。 有人可以尝试解释这个(或指出一个很好的解释)? 只是一个澄清 ; 我没有find关于如何处理上述视图模型的两个问题的例子,而只是解释为什么我应该使用视图模型。
我有一个mvc应用程序,我正在使用这样的模型: public class BlockedIPViewModel { public string IP { get; set; } public int ID { get; set; } public bool Checked { get; set; } } 现在我有一个视图来绑定一个像这样的列表: @model IEnumerable<OnlineLotto.Web.Models.BlockedIPViewModel> @using (Html.BeginForm()) { @Html.AntiForgeryToken() } @foreach (var item in Model) { <tr> <td> @Html.HiddenFor(x => item.IP) @Html.CheckBoxFor(x => item.Checked) </td> <td> @Html.DisplayFor(modelItem => item.IP) </td> […]
我正在使用ASP .NET MVCtesting版,并得到HTTP 404(资源无法find)错误,当我使用这个URL在最后有一个“点”: http:// localhost:81 / Title / Edit / Code1 。 如果我删除最后的点或点在中间的某处,我不会得到错误。 我试图debugging,但它在MvcHandler中的ProcessRequest之前从“System.Web.CachedPathData.GetConfigPathData(String configPath)”得到错误。 在url的末尾不允许使用“点”吗? 或者有没有办法解决路线定义来处理这个url? 举个例子:我有一个名为Detail1 [Id(integer),Code(string),Description(string)]的表,通过它的Id列与Master1具有FK关系。 每当我selectMaster1的logging,我也select它的Detail1logging来得到它的代码字段。 为了不每次都进行这个连接(因为通常不只有一个细节,所以不止一个)我select不使用Id列,并且我创build了Detail1的Code PK。 但是,当我摆脱Id和使用代码作为PK,然后我的路线也开始与代码字段,如:Detail1 \ Edit \ Code1 这个守则可以有任何东西或最后,包括DOT。 有些情况下,我可以在最后禁止DOT,但有时候确实有意义。 而且我也看到这个post ,路线可以非常灵活,所以我不认为我的太奇怪了。 所以这就是为什么我做非标准的事情 有什么build议么? 而且为什么在一个url结尾处有一个DOT这么奇怪呢?
很明显,我错过了一些东西,我无法在IIS 7上的Windows Small Business Server 2008上部署简单的ASP.NET MVC 4,.NET 4.5应用程序。 .NET框架4.5安装。 我应该在应用程序的应用程序池基本设置上看到该版本(4.5)吗? 在这个时候,我只有2.0和4.0,因为4.5只是在4.0框架的顶部添加了3.5,我猜这是正常的。 当我浏览主页时,出现以下错误: 403 – 禁止:访问被拒绝。 您无权使用您提供的凭据查看此目录或页面。 当我请求名为Page / page / index的唯一控制器时,我得到404找不到页面。 像ASP.NET过程一样,不要获取http请求。 我可以请求一个简单的HTML页面。 应用程序池设置为.NET 4.0,并作为托pipepipe道模式集成。 NETWORK SERVICE具有对目录的读/写访问权限。 当然,应用程序从VS2012完美地工作。 我对这里不合适的东西毫无头绪,而search引擎查询没有什么帮助。 有没有人会有一个提示,这将是非常感激的。 谢谢 编辑 这些DLL已经在System.Web.Mvc,System.Web.Razor等bin文件夹中。 我创build了一个空的test.aspx页面,以确保asp.net工作进程获取请求,是的,页面是确定的。 所以看起来,MVC路由不起作用,虽然我有ASP.NET MVC 3的Web应用程序在该服务器上正常工作。 .NET 4.5安装后,我做了一个aspnet_regiis -iru的情况下,该应用程序添加一个aspnet_client文件夹,但仍然不能解决这个问题。 匿名身份validation在IIS身份validation部分启用,授权显示允许所有用户。 安装ASP.NET MVC 4,我只是做了一个修复,以确保。 尽pipe安装了ASP.NET MVC 4,但请求/ page / index操作的404错误是由标准IIS返回的,而不是标准的aspnet错误。 所以看起来像MVC 4框架没有正确安装,我只是仔细检查和修复。 我在哪里可以继续调查? @Mystere人,我已经改变了匿名身份validation使用应用程序池的身份,停止,启动应用程序,仍然是相同的错误。 […]
我有一个模型,我想在页面上显示一个字节数组图像文件。 我怎样才能做到这一点,而不必回到数据库? 我看到的所有解决scheme使用ActionResult返回到数据库检索图像,但我已经在模型上的图像…
我今天写了我的第一个razor页面,不知道如何input#if debug #else #endif 我怎样才能在剃刀中input预处理器?
对于我们的Web应用程序,我需要根据视图(或者更准确的说)来保存获取和显示的项目的顺序,即生成视图的控制器和操作(当然还有用户标识,但这不是重点)。 我不是在每个控制器动作中自己给一个标识符(为了将它用于某些依赖于视图的DB输出sorting),我认为从控制器自动创build这个标识符会更安全,叫从。 如何从控制器的action方法中获取控制器的名称和动作? 还是我需要反思? 我想这很容易,提前感谢!
我正在开发一个ASP.Net MVC站点,并在其上列出了一些数据库查询中的一些预订,并使用ActionLink来取消特定行的预订,如下所示: 我的预订 <table cellspacing="3"> <thead> <tr style="font-weight: bold;"> <td>Date</td> <td>Time</td> <td>Seats</td> <td></td> <td></td> </tr> </thead> <tr> <td style="width: 120px;">2008-12-27</td> <td style="width: 120px;">13:00 – 14:00</td> <td style="width: 100px;">2</td> <td style="width: 60px;"><a href="/Booking.aspx/Cancel/15">cancel</a></td> <td style="width: 80px;"><a href="/Booking.aspx/Change/15">change</a></td> </tr> <tr> <td style="width: 120px;">2008-12-27</td> <td style="width: 120px;">15:00 – 16:00</td> <td style="width: 100px;">3</td> <td style="width: 60px;"><a href="/Booking.aspx/Cancel/10">cancel</a></td> <td style="width: […]
你能解释一下ValidateAntiForgeryToken的用途,并且展示一下关于MVC 4中的ValidateAntiForgeryToken例子吗? 我找不到任何解释这个属性的例子?
在StackOverflow Podcast#54中 ,Jeff提到他们通过处理路由的方法上面的一个属性在StackOverflow代码库中注册他们的URL路由。 听起来像一个很好的概念(与Phil Haack提出的有关路线优先权的警告)。 有人可以提供一些样本来实现这个目标吗? 另外,使用这种风格的路由的任何“最佳做法”?