标签: mvc-editor-templates

ASP.NET MVC 4编辑器模板,用于基本类型

我为Number输入创建了一个模板,如果我这样做的话

@Html.EditorFor(model => model.SomeValue, "Number")
Run Code Online (Sandbox Code Playgroud)

它工作正常,使用模板.

但是这不起作用:

@Html.EditorFor(model => model.SomeValue)
Run Code Online (Sandbox Code Playgroud)

为什么我需要为基本类型指定编辑器模板的名称?

mvc-editor-templates asp.net-mvc-4

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

如何在foreach中使用EditorFor

我有一个模特:

public class MyListModel
{
    public int ID {get;set;}
    public List<User> Users{get;set;}
}
Run Code Online (Sandbox Code Playgroud)

如何在foreach中使用Html.EditorFor方法?

@model MyListModel
<table>
  <tr>
    <th></th>
  </tr>
  @foreach (var item in Model.Users) {
     <tr>
       <td>
          @Html.EditorFor(item.Enabled)
       </td>
     </tr>
  }
</table>
Run Code Online (Sandbox Code Playgroud)

asp.net-mvc mvc-editor-templates

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

如何为枚举制作默认的编辑器模板?

如何为枚举创建默认编辑器模板?我的意思是:我可以做这样的事情:

<%@ Control Language="C#" Inherits="System.Web.Mvc.ViewUserControl<Enum>" %> 
<% -- any code to read the enum and write a dropdown -->
Run Code Online (Sandbox Code Playgroud)

并将其放在EditorTemplates文件夹下的名称下Enum.ascx

这是我尝试过的问题的解决方法,但这不是我需要的.

这是我的枚举:

public enum GenderEnum
{
    /// <summary>
    /// Male
    /// </summary>
    [Description("Male Person")]
    Male,

    /// <summary>
    /// Female
    /// </summary>
    [Description("Female Person")]
    Female
}
Run Code Online (Sandbox Code Playgroud)

我制作了一个名为的模板GenderEnum.acsx并将其放入Shared/EditorTemplates文件夹中.这是模板:

<%@ Control Language="C#" Inherits="System.Web.Mvc.ViewUserControl<AlefTech.HumanResource.Core.GenderEnum>" %>
<%@ Import Namespace="AlefTech.HumanResource.WebModule.Classes" %>
<%=Html.DropDownListFor(m => m.GetType().Name, Model.GetType()) %>
Run Code Online (Sandbox Code Playgroud)

当然这个方法是我自己的:

public static class HtmlHelperExtension
    {
        public static MvcHtmlString DropDownListFor<TModel, TProperty>(this HtmlHelper<TModel> htmlHelper, Expression<Func<TModel, …
Run Code Online (Sandbox Code Playgroud)

asp.net asp.net-mvc enums mvc-editor-templates

20
推荐指数
4
解决办法
8481
查看次数

MVC3 EditorTemplate使用RadioButtons获得可以为空的布尔值

我在我的一个对象上有一个属性,它是一个可以为空的布尔值,我希望我的逻辑有真正的表示是,假为是否为零,而为零则为零.现在因为我将在许多不同的对象上拥有这样的多个属性,所以最有意义的是为这些属性创建编辑器和显示模板.我将使用jQuery UI来应用buttonset的可视元素,但这一切都有效,但是现在,这超出了我的问题范围.我的编辑器模板看起来像这样.

@model bool?
<div data-ui="buttonset">
@Html.RadioButtonFor(x => x, true, new { id = ViewData.TemplateInfo.GetFullHtmlFieldId("") + "Yes"}) <label for="@(ViewData.TemplateInfo.GetFullHtmlFieldId(""))Yes">Yes</label>
@Html.RadioButtonFor(x => x, false, new { id = ViewData.TemplateInfo.GetFullHtmlFieldId("") + "No" }) <label for="@(ViewData.TemplateInfo.GetFullHtmlFieldId(""))No">No</label>
@Html.RadioButtonFor(x => x, "null", new { id = ViewData.TemplateInfo.GetFullHtmlFieldId("") + "NA" }) <label for="@(ViewData.TemplateInfo.GetFullHtmlFieldId(""))NA">N/A</label>
</div>
Run Code Online (Sandbox Code Playgroud)

我的问题是,在任何情况下我都无法使用此编辑器模板来正确显示模型的当前值.因为我没有在此范围内呈现模型的属性而是模型本身,所以MVC3中的内置逻辑将不会正确设置checked属性,因为检查是为了验证名称不为空或为null(请参阅MVC3) source,InputExtensions.cs:第#259行).我无法通过与模型进行比较来动态设置checked属性,因为浏览器会检查有关已检查属性是否存在值的单选按钮,因此即使我的单选按钮看起来如下所示,最后一个按钮仍然是选中的.

<div class="span-4" data-ui="buttonset">
<input checked="checked" id="MyObject_BooleanValueYes" name="MyObject.BooleanValue" type="radio" value="True" /><label for="MyObject_BooleanValueYes">Yes</label>
<input checked="" id="MyObject_BooleanValueNo" name="MyObject.BooleanValue" type="radio" value="False" /><label for="MyObject_BooleanValueNo">No</label>
<input checked="" id="MyObject_BooleanValueNA" name="MyObject.BooleanValue" type="radio" value="null" /><label for="MyObject_BooleanValueNA">N/A</label>
</div><span class="field-validation-valid" data-valmsg-for="MyObject.BooleanValue" …
Run Code Online (Sandbox Code Playgroud)

asp.net-mvc mvc-editor-templates asp.net-mvc-3

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

ASP.NET MVC:使用EditorFor()和枚举的默认模板

我编写了一个EnumDropDownFor()帮助器,我想与EditorFor()一起使用.我刚刚开始使用EditorFor(),所以对模板的选择方式有点困惑.

我的Enum.cshtml编辑器模板如下:

<div class="editor-label">
    @Html.LabelFor(m => m)
</div>
<div class="editor-field">     
    @Html.EnumDropDownListFor(m => m)
    @Html.ValidationMessageFor(m => m)
</div>
Run Code Online (Sandbox Code Playgroud)

如果没有明确定义要使用的模板,是否有任何方法可以使用默认模板,只要将Enum传入EditorFor()?

asp.net-mvc editorfor mvc-editor-templates asp.net-mvc-3

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

ViewBag.Title值覆盖ASP.NET MVC编辑器模板的Model.Title

当我设置ViewBag.Title在Razor模板的顶部时,将Model.Title使用值ViewBag.Title而不是期望值填充编辑器模板文本框Model.Title.Html.EditorFor(x => Model.Title)显式调用不会产生此行为.

如何在ViewBag.Title不维护模型的自定义编辑器模板的情况下阻止编辑器模板显示值?

@{
    ViewBag.Title = "Edit Post " + Model.Title;
}

@Html.EditorFor(x => Model.Title) @* renders "My Title" text box *@
@Html.EditorFor(x => Model)       @* renders "Edit Post My Title" text box *@
Run Code Online (Sandbox Code Playgroud)

asp.net-mvc mvc-editor-templates editorformodel viewbag

17
推荐指数
2
解决办法
3268
查看次数

我可以添加到ASP.NET MVC 3中的Display/EditorTemplates搜索路径吗?

我有一套标准的模板用于我的mvc项目,我希望将其保存为源代码控制(SVN)中的外部文件夹

这意味着我不能将任何项目特定文件放在这个文件夹中,因为它将被提交到错误的地方.. ..我的标准模板需要覆盖MVC本身使用的那些,所以他们需要在MVC的位置期望重写模板(例如〜/ Views/Shared/EditorTemplates)

那我在哪里可以把我的项目特定的?

例如,我应该将它们放在〜/ Views/Shared/SiteEditorTemplates中,并添加搜索路径吗?我该怎么办?还是其他建议?

谢谢你,蚂蚁

mvc-editor-templates editortemplates asp.net-mvc-3

15
推荐指数
1
解决办法
3265
查看次数

从Controller中将EditorTemplate作为局部视图返回

我想从我的控制器返回一个EditorTemplate作为Partial View.

我目前在做:

public ActionResult Create([Bind(Prefix="Create")]CreateViewModel model)
{
    return PartialView("~/Views/Shared/EditorTemplates/Template.cshtml", model);
}
Run Code Online (Sandbox Code Playgroud)

问题是,在我这样做之后,Create_前缀远离我的观点.有没有办法将编辑器模板作为局部视图返回并保留前缀?

Index.cshtml @model IndexViewModel

@using(Html.BeginForm("Create"))
{
    @Html.EditorFor(m => m.Create, "Template")

    <input type="submit" value="Save" />
}
Run Code Online (Sandbox Code Playgroud)

我正在通过AJAX调用提交此表单.当我最初调用EditorFor时,所有字段都有一个前缀Create_.但是,在我提交表单并返回此PartialView后,前缀将丢失.

.net asp.net-mvc mvc-editor-templates asp.net-mvc-3

15
推荐指数
1
解决办法
7154
查看次数

为与模型绑定一起使用的输入创建我自己的HtmlHelper扩展

我对当前的DropDownList实现不满意,因为我对选项标签不能做太多(仅支持选中,支持文本和值).我想在我可以设置禁用和其他个人选项的地方.

目前我正在通过javascript改变选项,但我认为这有点像一种hacky方式,我宁愿只是渲染正确的html开始.

我知道我可以创建一个使用select和option标签的模板,并根据需要制作选项 - 但是正常的DropDownList扩展添加了val的东西以及特定的名称和ID,我想在提交表单时是正确的数据绑定:

<select data-val="true" data-val-number="The field SelectedValue must be a number." id="ParentDropDown_SelectedValue" name="ParentDropDown.SelectedValue">
Run Code Online (Sandbox Code Playgroud)

如何将这些属性添加到我自己的模板中?

asp.net-mvc html-helper mvc-editor-templates

15
推荐指数
1
解决办法
7749
查看次数

在ASP.NET MVC应用程序中更改日期格式

我需要更改日期格式dd.MM.yyyy.我收到客户端验证错误,因为ASP.NET MVC日期格式与我在服务器上的预期不同.

为了更改ASP.NET MVC日期格式,我试过:

Web.config文件:

<globalization uiCulture="ru-RU" culture="ru-RU" />
Run Code Online (Sandbox Code Playgroud)

模型:

[DataType(DataType.Date)]
[DisplayFormat(DataFormatString = "{0:dd.MM.yyyy}", ApplyFormatInEditMode = true)]
public DateTime? ServiceCreatedFrom { get; set; }
Run Code Online (Sandbox Code Playgroud)

编辑模板:

@model DateTime?
@Html.TextBox(string.Empty, (Model.HasValue 
    ? Model.Value.ToString("dd.MM.yyyy")
    : string.Empty), new { @class = "date" })
Run Code Online (Sandbox Code Playgroud)

视图:

@Html.EditorFor(m => m.ServiceCreatedFrom, new { @class = "date" })
Run Code Online (Sandbox Code Playgroud)

甚至Global.asax:

public MvcApplication()
{
    BeginRequest += (sender, args) =>
        {
            var culture = new System.Globalization.CultureInfo("ru");
            Thread.CurrentThread.CurrentCulture = culture;
            Thread.CurrentThread.CurrentUICulture = culture;
        };
}
Run Code Online (Sandbox Code Playgroud)

没有什么对我有用.

asp.net-mvc mvc-editor-templates razor asp.net-mvc-3 asp.net-mvc-4

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