自定义编辑器模板未呈现/未触发

时间:2018-10-02 16:05:15

标签: c# model-view-controller mvc-editor-templates

我在MVC项目中使用自定义模板,以不同方式显示各种对象类型。有些在工作,而另一些则没有!对于任何不起作用的东西,它们将被传递到我的object.cshtml自定义模板中,而不是它们自己的模板中。

这是一个例子。在此示例中,我正在创建一个地址查找类型,该类型要使用查找按钮呈现地址和邮政编码字段的第一行。

我的ViewModel具有以下内容:

namespace MyProject.Views
{
    public class AddressLookup
    {
        public string Postcode { get; set; }
        public string FirstLine { get; set; }
    }

    public class RegistrationViewModel
    {
        [DisplayName("Address Lookup")]
        public AddressLookup addressLookup { get; set; }
    }
}

我的视图如下:

@model RegistrationViewModel
<div class="well" id="form-well">
    <h2>Register New User</h2>
    <h3>Step 1 of 3 - Login Details</h3>
    @using (Html.BeginForm("RegisterNewUser", "Controller", FormMethod.Post, new { @class = "form-horizonal" }))
    {
        @Html.AntiForgeryToken();
        @Html.EditorForModel(Model);
        @Html.ValidationSummary();
        <div style="padding: 15px;" class="form-group col-md-offset-3">                
            <input type="submit" value="Next" class="btn btn-lg btn-success" />
        </div>
    }
</div>

我的AddressLookup.cshtml看起来像这样:

@using MyProject
@model AddressLookup

@Html.TextBoxFor(x => x.FirstLine)
@Html.TextBoxFor(x => x.Postcode)

<p>
    <button class="btn btn-info" type="button" onclick="alert('lookup');" value="Add new address">Lookup address</button>
</p>

但是在调试时,它运行的是EditorTemplates文件夹中object.cshtml中的代码,而不是AddressLookup中的代码。

有什么想法吗?

谢谢 西蒙

1 个答案:

答案 0 :(得分:0)

在我的视图模型中向属性添加UIHint是可行的(尽管我不完全理解为什么)。

namespace MyProject.Views
{
    public class AddressLookup
    {
        public string Postcode { get; set; }
        public string FirstLine { get; set; }
    }

    public class RegistrationViewModel
    {
        [DisplayName("Address Lookup")]
        [UIHint("AddressLookup")]
        public AddressLookup addressLookup { get; set; }
    }
}

谢谢 西蒙