Tag: razor

在MVC3 Razor中,如何在一个动作中获得渲染视图的html?

有没有人知道如何获得一个行动内的视图生成的HTML? 是这样的: public ActionResult Do() { var html = RenderView("hello", model); … }

ASP.NET MVC Razor:如何在控制器动作中渲染Razor Partial View的HTML

如何在ASP.NET视图引擎上生成给定的部分视图的HTML 是已知的 。 但是,如果在剃刀部分视图上使用此function,则不起作用,例外情况是部分视图不是从“UserControl”派生的。 如何修复渲染以支持剃刀局部视图? 我需要这个,因为我生成这个部分视图的电子邮件… 更新: 代码失败(@mcl): public string RenderPartialToString(string controlName, object viewData) { ViewPage viewPage = new ViewPage() { ViewContext = new ViewContext() }; viewPage.Url = this.GetUrlHelper(); string fullControlName = "~/Views/Email/" + controlName + ".ascx"; viewPage.ViewData = new ViewDataDictionary(viewData); viewPage.Controls.Add(viewPage.LoadControl(fullControlName)); StringBuilder sb = new StringBuilder(); using (StringWriter sw = new StringWriter(sb)) { using […]

从视图或部分视图中将CSS或JavaScript文件添加到布局头部

布局页面头: <head> <link href="@Url.Content("~/Content/themes/base/Site.css")" rel="stylesheet" type="text/css" /> </head> 应用程序的View(AnotherView)需要: <link href="@Url.Content("~/Content/themes/base/AnotherPage.css")" rel="stylesheet" type="text/css" /> AnotherView有一个局部视图(AnotherPartial),它需要: <link href="@Url.Content("~/Content/themes/base/AnotherPartial.css")" rel="stylesheet" type="text/css" /> 问题:我们怎样才能把这些CSS文件的链接AnotherView和AnotherPartial链接添加到Layout头 ? RenderSection不是一个好主意,因为AnotherPage可以有多个Partial。 将所有CSS添加到头是没有用的,因为它会改变dynamic(这取决于Anotherpages)。

MVC如何显示模型中的字节数组图像

我有一个模型,我想在页面上显示一个字节数组图像文件。 我怎样才能做到这一点,而不必回到数据库? 我看到的所有解决scheme使用ActionResult返回到数据库检索图像,但我已经在模型上的图像…

MVC Razor视图嵌套的foreach的模型

设想一个常见的情况,这是我遇到的更简单的版本。 实际上我有几层在我的进一步嵌套…. 但是这是情况 主题包含列表类别包含列表产品包含列表 我的控制器提供了一个完全填充的主题,包含该主题的所有类别,此类别中的产品以及它们的订单。 订单集合中有一个名为Quantity的属性(还有许多其他属性)需要进行编辑。 @model ViewModels.MyViewModels.Theme @Html.LabelFor(Model.Theme.name) @foreach (var category in Model.Theme) { @Html.LabelFor(category.name) @foreach(var product in theme.Products) { @Html.LabelFor(product.name) @foreach(var order in product.Orders) { @Html.TextBoxFor(order.Quantity) @Html.TextAreaFor(order.Note) @Html.EditorFor(order.DateRequestedDeliveryFor) } } } 如果我使用lambda而不是那么然后我似乎只得到顶级模型对象的引用,“主题”不在那些在foreach循环。 我试图在那里甚至有可能做什么,或者我高估了或误解了什么是可能的? 与上述我得到一个TextboxFor,EditorFor等错误 CS0411:方法“System.Web.Mvc.Html.InputExtensions.TextBoxFor(System.Web.Mvc.HtmlHelper,System.Linq.Expressions.Expression>)”的types参数不能从用法中推断出来。 尝试明确指定types参数。 谢谢。

ASP.NET MVC 3 – 部分VS显示模板与编辑器模板

所以,标题应该说明一切。 为了在ASP.NET MVC中创build可重用的组件,我们有3个选项(可能是其他我没有提到的): 部分视图: @Html.Partial(Model.Foo, "SomePartial") 定制编辑器模板: @Html.EditorFor(model => model.Foo) 自定义显示模板: @Html.DisplayFor(model => model.Foo) 根据实际的View / HTML,这三个实现是相同的: @model WebApplications.Models.FooObject <!– Bunch of HTML –> 所以,我的问题是 – 什么时候/如何决定使用哪一个? 我真正想要的是在创build一个问题之前问自己的问题列表,可以使用这些答案来决定使用哪个模板。 以下是我用EditorFor / DisplayForfind的两件事情: 它们在呈现HTML帮助器时尊重模型层次结构(例如,如果在“Foo”模型中有“Bar”对象,则“Bar”的HTML元素将以“Foo.Bar.ElementName”呈现,而部分将具有“的ElementName“)。 更健壮的,例如,如果您的ViewModel中有一个List<T> ,您可以使用@Html.DisplayFor(model => model.CollectionOfFoo) ,而且MVC足够聪明,可以看到它是一个集合并呈现出单个显示为每个项目(而不是一个部分,这将需要一个明确的循环)。 我也听说DisplayFor呈现“只读”模板,但我不明白 – 我不能在那里扔表吗? 有人能告诉我其他一些原因吗? 比较三个地方是否有列表/文章?

MVC3 Razor DropDownListFor枚举

试图让我的项目更新到MVC3,我无法find: 我有一个简单的数据types的ENUMS: public enum States() { AL,AK,AZ,…WY } 我想在一个包含这个数据types的模型视图中用作DropDown / SelectList: public class FormModel() { public States State {get; set;} } 非常简单:当我为这个部分类使用自动生成视图时,它忽略了这种types。 我需要一个简单的select列表,当我点击提交和通过我的AJAX – JSON POST方法处理时,将enum的值设置为选定的项目。 而比视图(???!): <div class="editor-field"> @Html.DropDownListFor(model => model.State, model => model.States) </div> 在此先感谢您的build议!

什么是@ Html.DisplayFor语法?

我明白,在剃刀,@Html做了一堆整洁的东西,如生成HTML的链接,input等 但是我没有得到DisplayFor函数… 我为什么要写: @Html.DisplayFor(model => model.Title) 当我可以写: @Model.Title

书写/输出HTMLstring未转义

我有安全/消毒的HTML保存在数据库表中。 我怎样才能把这个HTML内容写在剃刀视图中? 它总是逃避像&和&amp; 。

模型不绑定在POST方法

我对MVC有一个非常奇怪的问题。 我的模型一直空着提交。 这可能很简单,但我找不到问题。 我的模型看起来像这样: public class LoginModel { public string Username; public string Password; } 我的控制器是这样的: [HttpGet] public ActionResult Login() { return View(); } [HttpPost] public ActionResult Login(LoginModel loginTest) { if (loginTest.Username != "x" && loginTest.Password != "y") { ModelState.AddModelError("a", "Login failed."); return View(loginTest); } else { return RedirectToAction("Home", "Welcome"); } } 而且这个观点也很简单。 @model LoginSolution.Models.LoginModel […]