Tag: 剃刀

检查ViewBag是否有一个属性,有条件地注入JavaScript

考虑这个简单的控制器: Porduct product = new Product(){ // Creating a product object; }; try { productManager.SaveProduct(product); return RedirectToAction("List"); } catch (Exception ex) { ViewBag.ErrorMessage = ex.Message; return View("Create", product); } 现在,在我的Create视图中,我想检查ViewBag对象,看它是否有Error属性。 如果它有错误属性,我需要注入一些JavaScript的页面,以显示错误信息给我的用户。 我创build了一个扩展方法来检查这个: public static bool Has (this object obj, string propertyName) { Type type = obj.GetType(); return type.GetProperty(propertyName) != null; } 然后,在“ Create视图中,我编写了这一行代码: @if (ViewBag.Has("Error")) […]

在剃刀foreach上获取索引值

我在我的视图中的razorforeach循环遍历List<T> ,呈现一个部分。 在部分我正在渲染一个单一的logging,我想在我的视图中连续4。 我有一个css类的两个结束列,所以需要在部分确定该调用是否是第1或第4条logging。 什么是在我的部分识别这个最好的方式输出正确的代码? 这是我的主页,其中包含循环: @foreach (var myItem in Model.Members){ //if i = 1 <div class="grid_20"> <!– Start Row –> //is there someway to get in for i = 1 to 4 and pass to partial? @Html.Partial("nameOfPartial", Model) //if i = 4 then output below and reset i to 1 <div class="clear"></div> <!– End […]

asp.net mvc 3 razor视图 – >强types元组列表问题

我有一个asp.net MVCrazor视图奇怪的问题。 我希望我的模型是一个List<Tuple<string, int, int, int, int>> ,这在我的其他c#方法中是完全有效的。 但是当我把它粘贴到@model声明中时,它似乎只挑出了元组的string部分。 所以我没有整数 只有item1。 这个问题是不存在的,如果我把它绑定到一个元组而不是列表。 似乎生成的代码是错误的,所以也许这是一个剃刀视图中的错误? 我编译的错误是: Description: An error occurred during the compilation of a resource required to service this request. Please review the following specific error details and modify your source code appropriately. Compiler Error Message: CS1003: Syntax error, '>' expected Source Error: Line 27: Line […]

ASP.NET MVC3部分视图命名约定

我是MVC开发新手,请耐心等待。 是否真的有必要像_Action.cshtml (用_下划线)命名我的部分视图符合命名约定? 这是我的问题我有一个控制器(StudentController)和一个行动(列表)有一个名为“List.cshtml”的部分视图文件,并有 @{ Html.RenderAction("List", "Student"); } 在我的HomeController – 索引视图中显示这个作为局部视图的工作。 但是,如果我将_List.cshtml的部分视图_List.cshtml为当然不起作用。 Visual Studio甚至找不到我的操作Student – List的视图,因为它认为它仍然在寻找与我的操作(List.cshtml)完全相同的名称。 我该怎么办? 我很习惯ASP.NET ascx与ascx.cs代码配对。 🙁

我应该在MVC Razor中find共享的@helper函数

我有一个帮助function,把分钟变成小时/分钟。 我目前在我的layout.cshtml中,但每页都看不到该function。 我应该在哪里放置助手function,使每个页面都可以看到? @helper DisplayElapsedTime(int timeInMins){ String timeStr = ""; if (timeInMins >= 60) { int hours = timeInMins/60; timeInMins -= hours * 60; timeStr = hours + "h "; } if (timeInMins > 0){ timeStr += timeInMins + "m"; } @timeStr; }

ASP.NET视图中的区域?

我正在用剃刀引擎做一个ASP.NET MVC应用程序。 我想知道是否有可能在视图中使用区域 。 就像是: #region blabla <p>@Model.Name</p> <p>…</p> #endregion 这不起作用。 有其他select吗?

在部分视图中放入JavaScript是否可行?

我正在开发Web应用程序,其中主页面包含两个部分:始终可见的常量块和由3个部分视图之一组成的信息块。 每个部分视图都是AJAX请求的结果,只加载一次(在jQuery提供切换窗口之后)。 它运作良好,但我遇到了一个问题。 部分视图的html代码包含常量块和信息块中使用的js函数。 当页面被加载时,这些函数可以“看到”对方,它的工作,但resharper无法find函数声明,并警告我这个。 我不能通过将代码转换成外部js文件来解决问题,因为在代码中可以find剃刀的语法。 我能用这个做什么? 谢谢。 更新: 最后,我决定解决从视图分离我的JS代码的问题。 所以,新的问题是如何将剃刀语法包含到js文件中,或者可以接受的select是什么。 我发现的stream行的解决scheme是使用全局variables,数据属性和我更喜欢的 – John Katsiotis的RazorJS库。 http://djsolid.net/blog/razorjs—write-razor-inside-your-javascript-files 我希望它能够稳定工作,让Resharper高兴。 干杯! 更新: 三年后,我回忆起这个问题,并根据我的经验决定更新它。 事实上,现在我宁愿不build议使用额外的库。 特别是如果你不是项目团队中唯一的成员……如果你在所有的库中得到了保证,那么它会受到创build者和社区的支持,并且可以很容易地集成到你的IDE中(如果使用特殊的语法) 。 同样,你们团队的所有人都应该知道它是如何工作的。 所以现在我会build议做下一件事情: 把所有的JS保存在不同的文件中。 尽可能地隔离它。 为其提供外部API。 从视图中调用API函数。 将所有Razor生成的URL,短信,常量作为资源parameter passing。 例如: js文件: $.api.someInitFunction = function(resources){ … } 视图: <script> $.api.someInitFunction({ urls: { myAction: '@Url.Action("MyAction", "MyController")' }, messages: { error: '@errorMessage' }, consts: { myConst: […]

命名约定来区分部分视图和普通视图

部分视图是否有任何非官方的标准命名约定? 我看到有人build议用“_”加前缀,其他人用“部分”后缀,我知道这个问题是主观的,但由于没有官方的指导方针,我想知道这里的大部分用于命名他们的部分意见。 也许最被投票的答案将成为标准。 更新:我使用ASP.NET MVC 3与Razor作为视图引擎,在以前的版本中,你不需要一个约定,因为你有.ascx扩展名

ASP.NET MVC 3(Razor)Ajax.ActionLink – 我做错了什么?

尝试有一个AJAX动作链接,当点击时,应该做一个HttpGet到一个动作方法,它返回一个PartialViewResult和HTML推到一个div。 这是我的观点: <div id="admin-options" class="admin"></div> @Ajax.ActionLink("Show Admin Options", "ShowOptions", "Post", new { area = "Admin" }, new AjaxOptions { UpdateTargetId = "admin-options", HttpMethod = "GET" }) 以下是操作方法: public class PostController : Controller { [HttpGet] [Authorize(Roles="Admin")] public PartialViewResult ShowOptions() { return PartialView(); } } 这是它生成的HTML: <a data-ajax="true" data-ajax-method="GET" data-ajax-mode="replace" data-ajax-update="#admin-options" href="/Admin/Post/ShowOptions">Show Admin Options</a> 对我看起来很好。 但不是做一个AJAX调用,而是通过浏览器的URL做一个普通的HTTP GET,然后redirect到/ […]

尝试“System.Web.Mvc.PreApplicationStartCode.Start()”到关键方法“System.Web.WebPages.Razor.PreApplicationStartCode.Start()”失败

我的应用程序工作正常,我做了一些升级后,我得到这个错误。 “/”应用程序中的服务器错误。 尝试通过安全透明方法“ System.Web.Mvc.PreApplicationStartCode.Start() ”访问安全关键方法“ System.Web.WebPages.Razor.PreApplicationStartCode.Start() ”失败。 说明:执行当前Web请求期间发生未处理的exception。 请查看堆栈跟踪,了解有关错误的更多信息以及源代码的位置。 exception详细信息: System.MethodAccessException :尝试通过安全透明方法“ System.Web.Mvc.PreApplicationStartCode.Start() ”访问安全关键方法“ System.Web.WebPages.Razor.PreApplicationStartCode.Start() ”失败。 源错误 :执行当前Web请求期间生成未处理的exception。 有关exception的来源和位置的信息可以使用下面的exception堆栈跟踪来标识。 版本信息 :Microsoft .NET Framework版本:4.0.30319; ASP.NET版本:4.0.30319.18055 我不记得我做的更新。 有没有办法来解决这个问题?