标签: mvc-editor-templates

在ASP.NET MVC中将日期时间拆分为日期和时间

我已经阅读了Scott Hanselman关于这个主题的帖子.我发现另一篇文章似乎是一种更简单的方法.第二个我决定尝试.

但是,创建EditorTemplates的第一部分对我不起作用.我复制了DateTime.ascx和TimeSpan.ascx让作者写了它们.然后我在视图中拆分字段.

    <div class="editor-label">
        <%= Html.LabelFor(model => model.LeaveRequest.DateOfLeave)%>
    </div>
    <div class="editor-field">
        <div class="date-container">
            <%= Html.TextBoxFor(model => model.LeaveRequest.DateOfLeave.Date)%>
        </div>
        <div class="time-container">
            <%= Html.TextBoxFor(model => model.LeaveRequest.DateOfLeave.TimeOfDay)%>
        </div>
        <div class="clear">
            <%= Html.ValidationMessageFor(model => model.LeaveRequest.DateOfLeave)%>
        </div>
    </div>
Run Code Online (Sandbox Code Playgroud)

我遇到的问题是,我得到的行为与作者解释为应该发生的行为不同.这是我的结果的屏幕截图.

屏幕截图显示第一个字段中的完整DateTime和第二个字段中的全部零

我必须遗漏一些东西,但我不知道是什么.我已多次阅读这篇文章,看不出我错过了什么.我猜测需要有一些东西告诉程序给我们新的EditorTemplates,但我不知道如何.

asp.net-mvc datetime mvc-editor-templates

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

MVC3 Razor编辑器/显示模板和泛型

关于mvc模板和泛型有一些问题,但似乎没有任何与我正在寻找的相关.考虑以下模型:

namespace MyNamespace
{
    public class ModelBase { /* Not important for example */ }

    public class MyModel : ModelBase
    {
        public string Name { get; set; }
    }

    public class MyViewModel
    {
        public IEnumerable<ModelBase> Data { get; set; }
    }
}
Run Code Online (Sandbox Code Playgroud)

和控制器:

public class HomeController : Controller
{
    public ActionResult Index 
    {
        return View(new MyViewModel { Data = new List<MyModel>() })
    }
}
Run Code Online (Sandbox Code Playgroud)

Razor视图Views/Home/Index.cshtml看起来像:

@model MyNamespace.MyViewModel
@Html.EditorFor(m => m.Data)
Run Code Online (Sandbox Code Playgroud)

没什么特别的.如果我想要一个显示或编辑器模板,我可以在Views/Shared/EditorTemplate下或在名为MyModel.cshtml的Views/Home/EditorTemplates下创建一个文件,它可以正确找到它.

如果我想在显示列表时为ModelBase的每个实现做些不同的事情怎么办?Mvc视图查找器将在上述任何路径中正确找到List'1.cshtml模板.但是,我需要做的是为List`1 [MyModel] .cshtml做一个模板

我似乎无法获得正确的文件命名.到目前为止我尝试过的(相对于此示例命名):

  • List`1 [为MyModel] .cshtml
  • List`1 [[为MyModel].CSHTML …

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

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

使用JQuery UI DatePicker的日期范围的MVC编辑器模板

我需要在大多数MVC视图上显示JQuery UI Datepicker.所以我为Date Range创建了一个Model类:

public class DateRange
{
    [DisplayName("From")]
    [DataType(DataType.Date)]
    public DateTime? FromDate { get; set; }

    [DisplayName("To")]
    [DataType(DataType.Date)]
    public DateTime? ToDate { get; set; }
}
Run Code Online (Sandbox Code Playgroud)

和编辑为它填写:

@model DateRange
@Html.LabelFor(model => model.FromDate)
@Html.TextBoxFor(model => model.FromDate, "{0:dd/MM/yyyy}", new { @class = "dateRangeFrom"})
@Html.LabelFor(model => model.ToDate)
@Html.TextBoxFor(model => model.ToDate, "{0:dd/MM/yyyy}", new { @class = "dateRangeTo"})
Run Code Online (Sandbox Code Playgroud)

并在我的EditorHookup.js文件中:

$(function ()
{
    $('.dateRangeFrom').datepicker({
        dateFormat: "dd/mm/yy",
        onClose: function (selectedDate) {
            $(".dateRangeTo").datepicker("option", "minDate", selectedDate);
        }
    });
    $('.dateRangeTo').datepicker({
        dateFormat: "dd/mm/yy",
        onClose: function (selectedDate) {
            $(".dateRangeFrom").datepicker("option", "maxDate", selectedDate); …
Run Code Online (Sandbox Code Playgroud)

asp.net-mvc jquery jquery-ui mvc-editor-templates

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

ASP.net MVC - 使用相同模型类型的EditorFor两次

我在MVC中有以下模型:

public class IndexViewModel
{
    public SubViewModel SubViewModel { get; set; }
}
Run Code Online (Sandbox Code Playgroud)

在我的索引视图中,我正在执行以下操作以显示编辑器SubViewModel:

Index.cshtml

@model IndexViewModel

@Html.EditorFor(m => m.SubViewModel)
Run Code Online (Sandbox Code Playgroud)

在我的SubViewModel.cshtml文件中,我尝试执行以下操作:

EditorTemplates/SubViewModel.cshtml

@model SubViewModel

@Html.EditorForModel("SubViewModelForm")
Run Code Online (Sandbox Code Playgroud)

基本上,我想把我的编辑分成两部分.第一个编辑器模板将创建表单,而内部模板将创建所有实际表单字段.问题是内部视图永远不会被渲染.

这就像MVC意识到我已经在该模型上调用了EditorFor并阻止我再次这样做.我有办法让这个工作吗?

编辑

我以为我清楚地输出了发生的事情,但我猜不是.

我想使用两个模板来显示单个模型.在第一个模板中,我想渲染表单和提交按钮,以及一些容器div.

在第二个模板中,我想渲染所有表单域.

Index.cshtml @ Html.EditorFor(m => m.SubViewModel) - >渲染表单和容器

SubViewModel.cshtml @ Html.EditorForModel("SubViewModelForm") - >呈现表单字段

问题是第二次调用(@ Html.EditorForModel("SubViewModelForm"))似乎没有做任何事情.它根本不会呈现任何标签.它被MVC忽略了.

我想这样做的原因是因为我将使用ajax调用发布此表单.如果一切正常(模型状态有效),那么我想将JSON数据返回到视图.如果模型无效,我想只返回表单字段的局部视图.这样我就不需要再次连接所有的事件处理程序了.我只能替换表单字段而不是整个视图.

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

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

EditorTemplate Collection模型类的命名约定

我有一个声明为类型的模型属性List<MyClass>.

public class MyModel
{
    List<MyClass> MyProperty { get; set; }
}
Run Code Online (Sandbox Code Playgroud)

我希望能够使用Razor模板显示/编辑属性.我的问题是,我如何命名EditorTemplate视图,以便我可以使用普通语法显示属性:

@model MyModel
@Html.DisplayFor(m => m.MyProperty)
Run Code Online (Sandbox Code Playgroud)

我知道我可以创建一个名为MyClass.cshtml的视图,用于该类型MyClass,但如何为列表创建模板?

asp.net-mvc mvc-editor-templates razor-2

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

为字符串属性 ASP.NET MVC4 创建 EditorTemplate

当我在表单中使用 Html.EditorFor 助手时,我希望能够自定义标签的外观,因此我定义了一个 EditorTemplate 来做到这一点。这就是我的表单在我看来的样子:

@model Models.SimpleUserClass
@{
    ViewBag.Title = "Create User";
}

<div class="row">
    <div class="col-lg-6" id="FromPlaceHoler">

        @using (Html.BeginForm("CreateUser", "Users"))
        {

            <fieldset>
                <legend>Create One Way Trip</legend>

                <div class="editor-label">
                    @Html.LabelFor(model => model.UserName)
                </div>
                <div class="editor-field">
                    @Html.EditorFor(model => model.UserName)
                </div>

                <div class="editor-label">
                    @Html.LabelFor(model => model.UserSurname)
                </div>
                <div class="editor-field">
                    @Html.EditorFor(model => model.UserSurname)
                </div>

                <div class="editor-label">
                    @Html.LabelFor(model => model.UserAge)
                </div>
                <div class="editor-field">
                    @Html.EditorFor(model => model.UserAge)
                </div>

                <div class="editor-label">
                    @Html.LabelFor(model => model.UserGender)
                </div>
                <div class="editor-field">
                    @Html.EditorFor(model => model.UserGender)
                </div>

                <p>
                    <input type="submit" value="Create" /> …
Run Code Online (Sandbox Code Playgroud)

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

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

禁用 mvc 中的复选框不会将值提交到数据库

如果禁用复选框,该值是否不会提交到数据库?我禁用了一个复选框,这样即使用户没有在表单的其余部分输入任何值,也至少会提交一个值。但是当我点击提交按钮时,数据库中没有条目。请帮忙

<table class="table-bordered">
<tr>
    <td colspan="2">
        @Html.CheckBoxFor(m => m.isUsed, new { @disabled="disabled"})
    </td>
</tr>
<tr>
    <td>
         @Html.TextBoxFor(m => m.FirstName, @Model.isUsed ? (object)new { @class = "form-control" } : new { @class = "form-control", @disabled = "disabled" })
        @Html.ValidationMessageFor(m => m.FirstName)
    </td>
</tr>
Run Code Online (Sandbox Code Playgroud)

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

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

单独程序集中的 EditorTemplate 模板

是否可以将 ASP.NET Core Web 应用程序配置为使用编译EditorTemplate到类库/单独程序集中的 razor 页面?

作为示例,以下问题详细说明了如何ViewComponent将 a 编译为类库。不幸的是,我找不到任何有关对EditorTemplate页面执行相同操作的信息。

ASP.NET MVC 6:在单独的程序集中查看组件

class-library .net-assembly mvc-editor-templates asp.net-core-mvc asp.net-core

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

MVC3 DropDownListFor没有选择项(Mvc bug?)

我有简单的测试模型:

  public class MyModel
    {
        public InnerModel InnerModel { get; set; }

    }

    public class InnerModel
    {
        public int Value { get; set; }
    }
Run Code Online (Sandbox Code Playgroud)

在控制器中:

public ActionResult Index()
{
    var model = new MyModel();

    model.InnerModel = new InnerModel { Value = 3 };

    return View("MyModelView", model);
}
Run Code Online (Sandbox Code Playgroud)

MyModelView:

@model MyModel

@{
    var items = new List<SelectListItem>()
                    {
                        new SelectListItem {Text = "one", Value = "1"},
                        new SelectListItem {Text = "two", Value = "2"},
                        new SelectListItem {Text = "three", Value …
Run Code Online (Sandbox Code Playgroud)

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

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

如何在编辑器模板中使用自定义htmlhelper包含完整属性名称

我有一个注册表单,我试图在其中放置Html.EditorFor()。

例如:

@ModelType RegisterViewModel 
    <othermarkup />
<div>
    @Html.LabelFor(Function(m) m.ConfirmPassword, New With {.class = "required"})
    <div>
        @Html.PasswordFor(Function(m) m.ConfirmPassword)
        @Html.ValidationMessageFor(Function(m) m.ConfirmPassword)
    </div>
</div>

<div>
    @Html.EditorFor(Function(m) m.AlertSettings)
</div>
<othermarkup />
Run Code Online (Sandbox Code Playgroud)

RegisterViewModel包含一个名为AlertSettings的属性(类型为AlertSettingsViewModel),AlertSettingsViewModel.vbhtml的编辑器模板如下所示:

@ModelType AlertSettingsViewModel
    <othermarkup />
<div class="panel-heading">Personalized Alert Settings</div>
<div class="panel-body">
    <div class="col-sm-6">
        <div>
            <label for="Disciplines">Disciplines</label>
            @Html.ValidationMessageFor(Function(m) m.Disciplines)
            @Html.CheckBoxListFor(Function(m) m.Disciplines, SelectLists.Disciplines())
        </div>

        <div class="visible-xs"><br /></div>
    </div>
</div>
<othermarkup />
Run Code Online (Sandbox Code Playgroud)

AlertSettingsViewModel的Disciplines属性是一个整数数组。

我正在使用自定义的HtmlHelper生成复选框列表。它由以下两个方法组成(第一个调用第二个):

''' <summary>
''' Returns a checkbox for each of the provided <paramref name="items"/>.
''' </summary>
<System.Runtime.CompilerServices.Extension>
Public Function CheckBoxListFor(Of TModel, TValue)(htmlHelper As …
Run Code Online (Sandbox Code Playgroud)

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

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

带模板的Asp.Net MVC EditorFor Array

我有一个ClassA模型,它具有一个ClassB数组属性.

public class ClassA
{
    public string ClassAProperty1 { get; set; }
    public string ClassAProperty2 { get; set; }
    public ClassB[] MySubCollection { get; set; }
}

public class ClassB
{
    public string Prop1 { get; set; }
    public string Prop2 { get; set; }
}
Run Code Online (Sandbox Code Playgroud)

我想在表格中编辑ClassB的实例.我为ClassB创建了一个EditorTemplate,用于创建表格行.

    @model ClassB
    <tr>
        <td>@Html.TextBoxFor(m => m.Prop1)</td>
        <td>@Html.TextBoxFor(m => m.Prop2)</td>
    </tr>
Run Code Online (Sandbox Code Playgroud)

这对于ClassA的编辑视图非常有用,因为MVC会自行完成所有字段索引魔术:

@Html.TextBoxFor(m => m.ClassAProperty1)
@Html.TextBoxFor(m => m.ClassAProperty2)

<table>
    <tr>
        <th>Col</th>
        <th>Col</th>
    </tr>
    @Html.EditorFor(m => m.MySubCollection)
</table>
Run Code Online (Sandbox Code Playgroud)

但是,我实际上想为包含表标记的数组创建一个编辑器模板,如下所示:

@model ClassB[]
<table>
    <tr>
        <th>Col</th>
        <th>Col</th> …
Run Code Online (Sandbox Code Playgroud)

c# asp.net asp.net-mvc mvc-editor-templates razor

0
推荐指数
1
解决办法
2089
查看次数