Tag: asp.net mvc

ASP.NET MVC Razor串联

我正在尝试使用Razor视图引擎呈现一个如下所示的HTML列表: <ul> <li id="item_1">Item 1</li> <li id="item_2">Item 2</li> </ul> 我试图用来呈现这个列表的代码是: <ul> @foreach (var item in Model.TheItems) { <li id="item_@item.TheItemId">Item @item.TheItemId</li> } </ul> parsing器是窒息的,因为它认为id属性中的下划线右边的所有内容都是纯文本的,不应该被parsing。 我不确定如何指示parsing器呈现TheItemId。 我不想只在包含item_前缀的模型对象上有一个属性。 我也必须保持这种语法,因为我正在使用带有JQuery Sortable的列表以及需要使用此语法格式化id属性的serialize函数。

胖模型/瘦控制器与服务层

我一直在使用.Net开发企业应用程序多年。我的应用程序通常有一个包含映射到SQL数据库表的实体的域模型。 我使用了Repository模式,dependency injection和服务层。 最近我们开始了MVC 3项目的工作,我们有一个辩论放哪个逻辑。 我来到了瘦控制器/ FAT模型架构,想知道服务层如何适应 选项1 – 与服务的模型谈判 控制器很薄,在模型上调用方法。 这些模型“知道”如何从数据库中加载自己并与存储库或服务通信。 例如,customerModel有一个Load(id)方法,并加载客户和一些像GetContracts()这样的子对象。 选项2 – 控制器与服务对话 控制器要求服务检索模型对象。 加载/存储等逻辑在服务层。 该模型是一个纯粹的实体模型,只有数据。 为什么选项1是更好的select,特别是当我们谈论企业应用程序时,我的经验告诉我要分开关注点,保持模型和控制器尽可能的薄,并且有专门的服务来完成业务逻辑(包括数据库交互) 感谢所有的build议和引用良好的资源。

什么,为什么或什么时候selectcshtml vs aspx更好?

我想知道为什么什么时候selectcshtml以及什么时候selectaspx技术更好? 这两种技术的目的是什么? 谢谢,

如何实现密码重置?

我正在研究ASP.NET中的应用程序,并想知道如何实现Password Resetfunction,如果我想推出自己的。 具体来说,我有以下问题: 生成一个难以破解的唯一ID的好方法是什么? 是否应该附加一个计时器? 如果是这样,应该多久? 我应该loggingIP地址吗? 它甚至重要吗? 在“密码重置”屏幕下,我需要什么信息? 只是电子邮件地址 或者,也许电子邮件地址加上他们“知道”的一些信息? (最喜欢的球队,小狗的名字等) 还有其他的事情需要注意吗? 注 : 其他问题完全掩盖了技术实现。 事实上接受的答案掩盖了血淋淋的细节。 我希望这个问题和随后的答案能够进入细节,我希望通过狭义的措辞来解释这个问题的答案是“绒毛”和“戈尔”。 编辑 :也进入如何将这样的表build模和处理在SQL Server或任何ASP.NET MVC链接到答案的答案,将不胜感激。

在asp.net mvc中如何平铺通过JsonResult返回的ExpandoObject?

在编译运行时的服务器端dynamic对象时,我非常喜欢ExpandoObject ,但是我在JSON序列化过程中遇到了麻烦。 首先,我实例化对象: dynamic expando = new ExpandoObject(); var d = expando as IDictionary<string, object>; expando.Add("SomeProp", SomeValueOrClass); 到现在为止还挺好。 在我的MVC控制器中,我想将其作为JsonResult发送,所以我这样做: return new JsonResult(expando); 这将JSON序列化到下面,供浏览器使用: [{"Key":"SomeProp", "Value": SomeValueOrClass}] 但是,我真的很想看到这个: {SomeProp: SomeValueOrClass} 我知道我可以实现这一点,如果我使用dynamic而不是ExpandoObject – JsonResult能够将dynamic属性和值序列化到一个对象(没有键或值业务), 但我需要使用ExpandoObject的原因是因为我不直到运行时才知道对象上的所有属性 ,而据我所知,我不能dynamic地将属性添加到dynamic而不使用ExpandoObject 。 我可能不得不在JavaScript中筛选“Key”,“Value”业务,但是我希望在把它发送给客户端之前弄清楚。 谢谢你的帮助!

强制浏览器在asp.net应用程序中获取最新的js和css文件

一些浏览器cachingjs和css文件,除非你强制它们,否则无法刷新它们。 什么是最简单的方法。 我刚刚实施了这个似乎工作的解决scheme。 在页面上声明一个版本variables public string version { get; set; } 从web.config中获取版本号 version = ConfigurationManager.AppSettings["versionNumber"]; 在你的aspx页面调用javascript和样式表就像这样 <script src="scripts/myjavascript.js?v=<%=version %>" type="text/javascript"></script> <link href="styles/mystyle.css?v=<%=version %>" rel="stylesheet" type="text/css" /> 所以,如果你在你的web.config中设置了1.0版本的版本,你的浏览器将会下载最新的文件,希望能够为你和你的用户节省一些沮丧。 还有另一种解决scheme效果更好,还是会导致网站出现无法预料的问题?

ASP.Net MVC RedirectToAction与锚点

我有以下问题:例如,我有像这样的路线: routes.Add(new Route("forums/thread/{threadOid}/last", new MvcRouteHandler()) Defaults = new RouteValueDictionary( new { controller = "Thread", action ="ShowThreadLastPostPage"}), Constraints = new RouteValueDictionary(new { threadOid = @"^\d+$" }) } ); 有没有一种方法使用RedirectToAction方法导航到这样的URL: forums/thread/{threadOid}/last#postOid

MVC web api:没有“Access-Control-Allow-Origin”标题出现在请求的资源上

我尝试了所有写在这篇文章中的东西: http : //www.asp.net/web-api/overview/security/enabling-cross-origin-requests-in-web-api ,但没有任何工作。 我试图从webAPI2(MVC5)获取数据使用angularJS在另一个域。 我的控制器看起来像这样: namespace tapuzWebAPI.Controllers { [EnableCors(origins: "http://local.tapuz.co.il", headers: "*", methods: "*", SupportsCredentials = true)] [RoutePrefix("api/homepage")] public class HomePageController : ApiController { [HttpGet] [Route("GetMainItems")] //[ResponseType(typeof(Product))] public List<usp_MobileSelectTopSecondaryItemsByCategoryResult> GetMainItems() { HomePageDALcs dal = new HomePageDALcs(); //Three product added to display the data //HomePagePromotedItems.Value.Add(new HomePagePromotedItem.Value.FirstOrDefault((p) => p.ID == id)); List<usp_MobileSelectTopSecondaryItemsByCategoryResult> items = dal.MobileSelectTopSecondaryItemsByCategory(3, […]

间歇性的asp.net mvcexception:“在控制器XYZ上找不到公共行为方法ABC”。

我得到一个间歇性的exception,说asp.net mvc无法find操作方法。 这是一个例外: 在控制器“Schoon.Form.Web.Controllers.ChrisController”上找不到公共操作方法“Fill”。 我想我的路由设置正确,因为这个应用程序大部分时间工作。 这是控制器的操作方法。 [ActionName("Fill")] [AcceptVerbs(HttpVerbs.Get | HttpVerbs.Post), UserIdFilter, DTOFilter] public ActionResult Fill(int userId, int subscriberId, DisplayMode? mode) { //… } 路线: routes.MapRoute( "SchoonForm", "Form/Fill/{subscriberId}", new { controller = "ChrisController", action = "Fill" }, new { subscriberId = @"\d+" } ); 这里是堆栈: System.Web.HttpException:在控制器“Schoon.Form.Web.Controllers.ChrisController”上找不到公共操作方法“Fill”。 System.Web.Mvc.Controller.HandleUnknownAction(String actionName)in C:\ dev \ ThirdParty \ MvcDev \ src […]

剃刀视图引擎 – 如何添加部分视图

我想知道,如果可能的话,是使用新的剃刀视图引擎渲染局部的最佳方式。 我知道这是当时还没有完成的事情 现在我正在使用RenderPage来呈现用户控件: @RenderPage("~/Views/Shared/LocaleUserControl.cshtml",ViewData.Model) 调用RenderPage的页面使用一个布局(主)页面,定义了三个部分:TitleContent,HeadContent和Maincontent。 当我试图从这个页面呈现我的语言环境控件时,看起来这些部分也是必需的 – 它们应该只在调用页面中需要并且存在。 我收到以下消息,不pipe是否包含我的部分视图中的部分(显然,我不想包括这些部分,但它似乎是一个有趣的debugging点…)。 以下部分已被定义,但尚未在布局页面“〜/ Views / Shared / LocaleUserControl.cshtml”上呈现:TitleContent; HeadContent; searchMaincontent 我的部分观点如下(改编自以下链接 ): @inherits System.Web.Mvc.WebViewPage<LocaleBaseModel> @using System.Web.UI; <p> @Html.LabelFor(model => Model.CountryName) <br /> @Html.DropDownListFor(model => Model.CountryName,null, string.Empty, new { @class = "text", accesskey="u"}) </p> <p> @Html.LabelFor(model => Model.StateProvince) <br /> @Html.DropDownListFor(model => Model.StateProvince, null, string.Empty, new { @class = […]