标签: html-helper

将onblur事件添加到ASP.Net MVC的Html.TextBox

HTML帮助程序(在MVC2中)的正确语法是什么,用于定义onblur处理程序,其中使用以下代码生成文本框:

<%=Html.TextBox(
    "ChooseOptions.AddCount" + order.ID,
    (order.Count > 0) ?  AddCount.ToString() : "",
    new { @class = "{number: true}  small-input" }
)
Run Code Online (Sandbox Code Playgroud)

javascript c# html-helper asp.net-mvc-2

4
推荐指数
1
解决办法
2万
查看次数

ASP.Net MVC:Html.Display()用于Collection中的对象

使用适当的视图模板绘制项目的标准MVC示例是:

Html.DisplayFor(m => m.Date)

如果Model对象具有名为Date of DateTime的属性,则返回带有Display/DateTime.ascx模板中的HTML的字符串.

假设您想要执行相同的操作,但无法使用强类型版本 - 您在编译时不知道此View的Model类型.你使用旧的:

Html.Display( "日期");

所以这是困难的部分.

假设模型是IEnumerable.您不知道这些对象在编译时是什么,但在运行时它们恰好是Date类型为Date的对象,如:

public class ModelClass
{
    public DateTime Date { get; set; }
}
Run Code Online (Sandbox Code Playgroud)

现在假设您希望View迭代这些对象并渲染每个对象.如果你所关心的只是价值,你可以做到这一点:

<%
StringBuilder sb = new StringBuilder();
foreach(object obj in (IEnumerable<object>)Model)
{
    Type type = obj.GetType();

    foreach(PropertyInfo prop in type.GetProperties())
    {
        // TODO: Draw the appropriate Display PartialView/Template instead
        sb.AppendLine(prop.GetValue(obj, null).ToString());
    }
}
%>
<%= sb.ToString() %>
Run Code Online (Sandbox Code Playgroud)

我显然采取了一些捷径来保持这个例子的重点.

这就是重点 - 我如何实现我为自己写的TODO?我不只是想获得价值 - 我希望它的格式很好,如Html.Display("Date").但是,如果我只是调用Html.Display("Date"),它会检查Model,这是一个IEnumerable,用于名为Date的属性,它当然没有.Html.Display不会将对象作为参数用作模型(如Html.Display(obj,"Date"),并且我可以找到的所有类和方法都在内部,所以我可以' t调整并直接调用它们.

必须有一些简单的方法来完成我想要做的事情,但我似乎无法找到它.

只是为了确保我清楚 - 这是DateTime.ascx代码的一个例子:

<%@ Control Language="C#" Inherits="System.Web.Mvc.ViewUserControl<System.DateTime>" %>
<%= …
Run Code Online (Sandbox Code Playgroud)

asp.net-mvc html-helper asp.net-mvc-partialview

4
推荐指数
1
解决办法
2万
查看次数

ASP.NET MVC3中<text>的"返回类型"

我试图弄清楚如何(或者是否可能)编写可以通过以下方式调用的HTML帮助器方法:

@Html.MyHelper("some string parameter", @<text>
    <table>
      <tr>
        <td>some html content in a "template" @Model.SomeProperty</td>
      </tr>
    </table>
</text>)
Run Code Online (Sandbox Code Playgroud)

这个想法是允许用户创建自己的模板以传递给帮助者.随着一些讨论,我想出了这个代码:

public static MvcHtmlString jQueryTmpl(this HtmlHelper htmlHelper, string templateId, Func<object, HelperResult> template) {
    return MvcHtmlString.Create("<script id='" + templateId + "' type='x-jquery-tmpl'>" + template.Invoke(null) + "</script>");
}
Run Code Online (Sandbox Code Playgroud)

这有效,但我不明白为什么或者它是否有意义.有人可以解释<text>实际背景是什么,我怎么能在上面描述的上下文中使用它?

谢谢

html-helper razor asp.net-mvc-3

4
推荐指数
1
解决办法
1752
查看次数

如何覆盖 RadioButtonFor 的名称属性?

我正在尝试将使用 for 循环和 Razor 语法创建的单选按钮分组在一起。这是代码:

       @for (var i = 0; i < Model.Sessions.Count(); i++)
       {
            @Html.HiddenFor(it => it.Sessions[i].Id)
            @Html.RadioButtonFor(it => it.Sessions[i].Checkbox, "0", new {@class = "Sessions", @id = id, @name="Sessions"})
            @Html.LabelFor(it => it.Sessions[i].Name, Model.Sessions[i].Name)
            <span class="time-span"><em>@Model.Sessions[i].StartTime</em><em>@Model.Sessions[i].EndTime</em></span>
            <br />
       }
Run Code Online (Sandbox Code Playgroud)

for循环内的第三行就是问题所在。基本上名称不会改变,并且始终是“Sessions[x].Checkbox”。复选框是自定义类的属性(布尔)。我似乎无法掌握调试 Razor 内容的窍门,因此任何帮助将不胜感激,我猜这对这里的某人来说将是非常明显的。

编辑 迪米特洛夫的帖子很有帮助。下面是我使用的最终代码。我使用 @class 和 @id 属性,以便能够使用 Javascript 选择最初选择的会话(因为这是编辑,而不是创建表单)。

    @for (var i = 0; i < Model.Sessions.Count(); i++)
    {
        @Html.HiddenFor(it => it.Sessions[i].Id)
        var SId = @Model.Sessions[i].Id;
        @Html.RadioButtonFor(it => it.selectedSession, Model.Sessions[i].Id, new { id = SId, @class = "Sessions" }) …
Run Code Online (Sandbox Code Playgroud)

html asp.net-mvc html-helper radiobuttonfor razor

4
推荐指数
1
解决办法
8292
查看次数

MVC 3“不包含validationmessagefor的定义”

我有以下代码试图用我自己的 @Html.MyValidationMessageFor(model => model.myfield) 扩展 @Html.ValidationMessageFor 并提供自定义错误 html

using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Web.Mvc;
using System.Text;
using System.Linq.Expressions;

namespace Hml.BackEnd.Helpers
{
public static class HtmlHelpers
{
    public static MvcHtmlString MyValidationMessageFor<TModel, TProperty>(this HtmlHelper<TModel> htmlHelper, Expression<Func<TModel, TProperty>> expression)
    {
        string myContent = "<div>" + htmlHelper.ValidationMessageFor(expression).ToString() + "</div>";
        return MvcHtmlString.Create(myContent);
    }
}
}
Run Code Online (Sandbox Code Playgroud)

我收到以下编译消息:

'System.Web.Mvc.HtmlHelper <Model> 不包含 ValidationMessageFor 的定义,并且没有扩展方法 ValidationMessageFor 接受类型为 'System.Web.Mvc.HtmlHelper < TModel> 的第一个参数是否可以找到您是否缺少 using 或程序集参考。

我无法理解,因为 System.Web.Mvc 在项目引用和使用中。

validation asp.net-mvc html-helper

4
推荐指数
1
解决办法
2942
查看次数

如何接受html内容作为MVC + Razor中辅助函数的参数?

我注意到一些Razor函数将html内容作为参数,例如:

@section Scripts  {
    <script type="text/javascript">
        $(function() {
            alert("aha");
        });
    </script>
}
Run Code Online (Sandbox Code Playgroud)

这不会立即渲染html内容,而是Razor的Section()系统存储它以供以后渲染.

我想编写自己的帮助函数,以相同的方式接受html内容,例如:

@Html.MyCoolFunction {
    <div><stuff><blah>...
    dafsdfsa
    </blah></stuff></div>
}
Run Code Online (Sandbox Code Playgroud)

我不知道什么语法会起作用,但可能MyCoolFunction会接受一个MvcHtmlString作为参数,我可以用它做我想做的事情.

这可能吗?

c# asp.net-mvc html-helper razor

4
推荐指数
1
解决办法
1105
查看次数

在MVC 4 View中查看ViewData

我遇到的问题是我从我的数据库返回一张照片记录,这在我的详细信息视图中工作正常.但是在控制器下的细节我也正在编译一个列表对象,我想在我的详细信息视图中显示它,因为它包含相关的其他照片.因此,在视图的底部,它应列出每个引用的照片名称.我正在使用Galleria.Io照片查看器,我想将其插入其中.

当我尝试遍历列表中的每个项目时,我得到:

{"Object reference not set to an instance of an object."}
Run Code Online (Sandbox Code Playgroud)

PhotosController

public ActionResult Details(int id = 0)
{
    Photos photos = db.FindPhotoById(id);
    if (photos == null)
    {
        return HttpNotFound();
    }

    List<Photos> photoList = GetImagesFromFilmID(8);

    ViewData["NumberOfImages"] = photoList.Count().ToString();
    ViewData["PhotoList"] = photoList;

    return View(photos);
}

public List<Photos> GetImagesFromFilmID(int filmID = 8 )
{

    List<Photos> photos;

    photos = (from p in db.Photos
              where p.PhotoDescription == "8"
              select p).Take(filmID).ToList();

    return photos;
}
Run Code Online (Sandbox Code Playgroud)

细节视图

@model TestingMVCQA.Models.Photos
@*@model IEnumerable<TestingMVCQA.Models.Photos>*@
@{
    ViewBag.Title = "Details"; …
Run Code Online (Sandbox Code Playgroud)

c# asp.net-mvc html-helper

4
推荐指数
1
解决办法
3万
查看次数

asp .net core - 自定义验证错误未显示在视图中

这是我的数据模型,它包括一个自定义验证:

public class MyData : IValidatableObject
{
    public int ID { get; set; }
    public int number { get; set; }

    [Required]
    public string text { get; set; }

    public IEnumerable<ValidationResult> Validate(ValidationContext validationContext)
    {
        if (text.Length < number)
        {
            yield return new ValidationResult(
                "Text too short, must be at least: " + number.ToString(),
                new[] { "number" });
        }
    }
}
Run Code Online (Sandbox Code Playgroud)

这是我观点的一部分:

<div class="form-group">
    <label asp-for="number" class="col-md-2 control-label"></label>
    <div class="col-md-10">
        <input asp-for="number" class="form-control" />
        <span asp-validation-for="number" class="text-danger" />
    </div>
</div>
Run Code Online (Sandbox Code Playgroud)

自定义验证错误文本永远不会显示在 …

validation html-helper asp.net-core

4
推荐指数
1
解决办法
3914
查看次数

在 MVC HTML Helper 中将 Javascript 代码与 HTML 一起注入

我想为一个按钮创建一个 HTML 帮助程序,我想将一些带有该按钮的 javascript(jQuery) 代码注入我的页面。我怎么能做到这一点?

谢谢

c# model-view-controller asp.net-mvc html-helper c#-4.0

4
推荐指数
1
解决办法
8556
查看次数

Rails image_tag未关闭图像标记

在rails项目中,我使用image_tag生成我的图像html元素.

<%= image_tag("test.jpg", :alt => "test image") %>
Run Code Online (Sandbox Code Playgroud)

正在产生

<img src="test.jpg" alt="test image">
Run Code Online (Sandbox Code Playgroud)

这在整个rails项目中都会发生.

是否有其他设置导致此设置的设置?如何让rails始终关闭图像标签?

xhtml html-helper ruby-on-rails image

3
推荐指数
1
解决办法
6680
查看次数