Пользовательский шаблон редактора не отображается - PullRequest
0 голосов
/ 02 октября 2018

Я использую пользовательские шаблоны в своем проекте 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>

Но при отладке он запускает код в object.cshtml в папке EditorTemplatesа не тот, что для AddressLookup.

Есть мысли?

Спасибо, Саймон

1 Ответ

0 голосов
/ 03 октября 2018

Добавление 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; }
    }
}

Спасибо, Саймон

...