Tag: razor

在Razor Helper里面使用@section

我们正在尝试将布局的各个部分设置为必需,但可以根据各个页面进行配置。 目前我们用一节来做这件事。 @section FloatingNav { @Model.Name @Model.AverageRating Episodes Cast Reviews Related } 这需要您在每个新页面中设置此块,但我希望使用部分默认值和选项来使用部分视图进行配置,从而简化此过程。 我希望设置一个像这样的Razor助手。 @using System.Web.Mvc.Html @helper FloatingNav(string name, int rating) { @section FloatingNav { name rating Episodes Cast Reviews Related } } @helper FloatingNav(System.Web.Mvc.HtmlHelper html, string viewName) { @section FloatingNav { @html.Partial(viewName) } } @helper FloatingNav(System.Web.Mvc.HtmlHelper html, string viewName, object model) { @section FloatingNav […]

使用Razor LINQ .Where()查找具有特定日期值的umbraco节点

我正在重写一个XSLT宏来显示当前页面的子节点,具体取决于为’month’和’year’设置的查询字符串变量。 这用于显示特定时期的文章的新闻列表页面。 在旧的宏中,我循环并选择“newsDate”属性的月份部分(这是一个datepicker字段)并将它们分配给nodelist变量的节点。 $ Displaymonth是从查询字符串中收集的。 我在使用razor语法创建类似的节点列表时遇到问题。 假设查询字符串是八月,我尝试过类似的事情 Model.Children.Where(umbraco.library.FormatDateTime(newsDate,’M’) + ” == 8″); Model.Children.Where(“Convert.ToDateTime(newsDate).Month == \”8\””); Model.Children.Where(“newsDate.Month == \”8\””); Model.Children.Where(“newsDate.Value.Month == \”8\””); Model.Children.Where(i=>Convert.ToDateTime(i.GetProperty(“newsDate”).Value).Month==8)) 调试错误主要是抱怨我的newsDate变量中没有属性“month”。 或者“类型’Func`2’中没有属性或字段日期”。 它似乎将我的Datepicker属性视为字符串,无论我做什么,如此处所述,但我使用的是最新版本的umbraco。 如何通过转换datepicker属性(Umbraco中的DateTime对象)的月份/年份并将其与变量进行比较来查找子项? 如何在.Where语句中获取此日期属性并提取月/年?

显示多列复选框列表

我目前正在显示我的复选框列表,如下所示: foreach (var employee in Model.Employees) { @Html.CheckBox(employee.Name); } 如果你想要一个长列的复选框,这很好,但是我的列表变长,所以我想在2或3列中显示它。 是否有捷径可寻? 我知道我可以创建一个表,然后为一个列的Employees的前半部分放入一个for循环,然后在另一个列中为另一半的Employees循环另一个for循环。 但这似乎是如此原始,必须有一种更简单,更清洁的方式。

已禁用DropDownList razor mvc

在我的剃刀视图中,我使用下拉列表。 我希望禁用此控件(不可选)。 我的代码是: @Html.DropDownListFor(model => model.LinguaCodiceMadre, Model.LinguaMadreList, new{ @disabled = “disabled” }) 但它不起作用,我的控制始终启用。 Html页面代码是: Albanian German English French Italian Portuguese Russian Spanish 没有“禁用”属性。 我的真正目标是有条件地启用/禁用下拉列表,如下所示: @Html.DropDownListFor(model => model.LinguaCodiceMadre, Model.LinguaMadreList, new{@disabled=Model.IsDisabled ? “disabled” : “false”}) 但它不起作用。 我试过两个 new{@disabled=Model.IsDisabled ? “disabled” : “false”} 和 new{disabled=Model.IsDisabled ? “disabled” : “false”} 但没有,禁用属性不在html页面上呈现。 有人有想法吗?

在日期时间只在剃刀中获得MM / dd / yyyy

我有这样的代码 @Html.EditorFor(model => model.VoluntaryWork.DateEnded) @Html.ValidationMessageFor(model => model.VoluntaryWork.DateEnded) 并且工作正常。 但它正从我的sql中检索整个数据 当前代码的输出 3/22/2017 12:00:00 AM 期望的输出 3/22/2017 我尝试使用像这样的代码@Html.ValidationMessageFor(model => model.VoluntaryWork.DateEnded.Value.ToShortDateString())但是它给了我一个错误 模板只能用于字段访问,属性访问,单维数组索引或单参数自定义索引器表达式 我尝试在谷歌搜索并发现这个但对我来说这是一个很长的方法? 我是那种方法的新手,所以我不知道如何使用它。 有没有最短的方法来实现所需的输出? 更新 控制器代码 PersonVoluntaryWork pvw = db.PersonVoluntaryWorks.Single(vw => vw.VoluntaryWorksId == id); return PartialView(“_NewPersonVoluntaryWorks”, pvw); 视图 @model System.Models.PersonVoluntaryWork @using (Html.BeginForm()) { @Html.EditorFor(model => model.VoluntaryWork.DateEnded) @Html.ValidationMessageFor(model => model.VoluntaryWork.DateEnded) }

使用razor的条件Html属性

我有一种情况,我想根据在视图模型上设置的属性显示启用或禁用按钮。 @if (Model.CanBeDeleted) { Delete } @if (!Model.CanBeDeleted) { Delete } 目前在我看来的代码,可以在上面看到,确实有效。 但是,我正在寻找一种方法,我只能在if语句中包含disabled属性,而不是为每种情况都有一个单独的按钮元素。 有关如何做到这一点的任何建议?

DropDownList选项更改时,使用参数重定向到MVC ActionResult

我正在使用MVC创建网站的一部分。 在我的一个视图中,我有一个DropDownList 。 当选择一个新的下拉列表选项,或者换句话说onchange ,我希望我的页面被重定向到特定的Controller ActionResult 。 如果没有参数,我可以访问MyAction ActionResult但是我无法弄清楚如何发送所需的参数。 我的控制器动作: public virtual ActionResult MyAction(int param1, int param2) { return View(); } 我在视图中的DropDownList: @Html.DropDownList( “viewDataItem”, Model.MyEnumerableList as SelectList, new { onchange = @” var form = document.forms[0]; form.action=’MyAction’; form.submit();” } ) 上面的代码调用MyAction,但它不发送参数。 有没有办法以某种方式将参数添加到此代码? 另一个想法是以某种方式使用@{Response.Redirect(@Url.Action(“MyAction”, “myController”, new { param1 = 2, param2= 3 }));}作为我的DropDownList操作,因为Response.Redirect允许我使用参数重定向到MyAction。 有没有办法以某种方式使onchanged = Response.Redirect? […]

使用Ajax在ASP.Net MVC3 Razor中渲染局部视图

我希望获得的基本function是在选择下拉列表项时更新表的内容。 当用户进行新选择并从数据库中检索新信息并重新填充表时,这将更新。 值得注意的是,我希望.change()使用的DropDownListFor不包含在AjaxForm中,而是出现在页面的其他地方(不可否认的是另一种forms) 为了达到这个目的,我看了一下这个问题: 在ASP.Net MVC3 Razor中动态渲染局部视图,使用Ajax调用Action ,它可以很好地按照我想做的方式进行。 到目前为止,我有一个控制器方法来处理为局部视图填充自定义视图模型: [HttpPost] public ActionResult CompanyBillingBandDetails(int id = 0) { var viewModel = new BillingGroupDetailsViewModel(); var billingGroupBillingBands = _model.GetAllRecordsWhere(x => x.BillingGroupId == id).ToList(); foreach (var band in billingGroupBillingBands) { viewModel.BillingBands.Add(band.BillingBand); } return PartialView(“BillingGroupDetailsPartial”, viewModel); } ViewModel我希望填充每个调用: public class BillingGroupDetailsViewModel { public List BillingBands { get; set; } } […]

Visual Studio 2013.3中新MVC5项目的错误

想知道是否有其他人经历过这个以及他们的解决方案是什么。 在Visual Studio 2013中,我创建了一个新的ASP.NET Web应用程序,保留所有默认值 在下一个屏幕中,我选择MVC,为MVC添加文件夹和核心参考,但不是其他两个选项。 身份validation保留在个人用户帐户中 ,我已取消选中云中的主机选项,如下所示。 项目向导完成后,我可以看到它在执行任何其他操作之前有26个错误。 删除一堆这些错误的第一个修复是Views\Account\ _SetPasswordPartial.cshtml和_ChangePasswordPartial.cshtml文件包含无效模型,因此我更改如下: [我的项目名称是WebApplication1 ,替换你自己的值] 在_SetPasswordPartial.cshtml中:从@model WebApplication1.Models.ManageUserViewModel到@model WebApplication1.Models.SetPasswordViewModel 在文件_ChangePasswordPartial.cshtml中:从@model Microsoft.AspNet.Identity.ManageUserViewModel到@model WebApplication1.Models.ChangePasswordViewModel 这使我陷入4个错误,分布在4个文件中 1.第68行,ManageController.cs return View(linkedAccounts); 视图RemoveLogin不存在 2,3。 有两个错误_SetPasswordPartial.cshtml和_ChangePasswordPartial.cshtml抱怨无法解决管理操作,但是当我在浏览器中调试和访问这些URL时,它们工作正常,所以我怀疑它们在某个路径表中。 我安装了R#,所以如果是这样的话,有时可能会出错。 4.最后一个是_RemoveAccountPartial.cshtml在第15行有一个错误,它抱怨帐户控制器中没有Disassociate操作,只要我可以确定这与删除应用程序的其他身份validation提供程序有关。 现在我可以通过添加所需的代码来解决所有这些问题,但它并不适合我,模板不能很好地开箱即用。 是否有新的模板可供使用,或者是否有人在开始正常工作之前如何使模板嗡嗡作响? 编辑2014-11-13我刚刚应用了VS2013.4,这些问题似乎已经修复了。 如果这是人们的问题,那么我建议应用该更新。

Razor语法 – 在字符串中使用两个变量

SomeObject record = new SomeObject(); record.value1 = 1; record.value2 = “hello”; 创建id为“indicator_1_hello”的复选框的正确剃刀语法是什么? 尝试这种方式时,它表示该对象不包含value1_的定义(可理解),当我尝试“indicator_@record.value1 @ _ @ record.value2”时,如果遇到名为_的事件的运行时错误背景(再次,可以理解)。 编辑: 作为我做过的临时解决方案: SomeObject record = new SomeObject(); record.value1 = 1; record.value2 = “hello”; var combined = String.Format(“{0}_{1}”, record.value1, record.value2); 我仍然很好奇你是否可以全部内联。