использование двух моделей в представлении mvc

Добрый день,

У меня есть макет с полем поиска (с начальной загрузкой и самодельной jquery typeahead).

    <div class="navbar navbar-inverse navbar-fixed-top">
    <div class="container">
        <div class="navbar-header">
            <button type="button" class="navbar-toggle" data-toggle="collapse" data-target=".navbar-collapse">
                <span class="icon-bar"></span>
                <span class="icon-bar"></span>
                <span class="icon-bar"></span>
            </button>
            @Html.ActionLink("EbanTabs", "Index", "Home", new { area = "" }, new { @class = "navbar-brand" })
        </div>

        <div class="navbar-collapse collapse">
            @Html.Partial("_TipoProyectoSearch") //<<my searchbox comes here
            @*<form class="navbar-form navbar-left">
                <div class="form-group">
                    <input type="text" class="form-control" placeholder="Search">
                </div>
                <button type="submit" class="btn btn-default">Submit</button>
            </form>*@
            <ul class="nav navbar-nav">
                @*<li>@Html.ActionLink("About", "About", "Home")</li>
        <li>@Html.ActionLink("Contact", "Contact", "Home")</li>*@
            </ul>
            @Html.Partial("_LoginPartial") 
        </div>

    </div>
</div>

вы можете видеть, что мое окно поиска представляет собой частичное представление, которое использует

//tipoproyectosearch partialview
@model MyProj.Models.Autocomplete
//start view
//...
//end view

Это модель автозаполнения

 public class Autocomplete
{
    public Guid Id { get; set; }

    public string Name { get; set; }
}

Моя проблема началась, когда я создал свое домашнее индексное представление. Я использовал там новую модель

@model  IEnumerable<MyProj.ViewModels.MyViewModel>
//here starts my view
//...
//end view

когда я запускаю свое приложение, я получаю эту ошибку

Элемент модели, переданный в словарь, имеет тип «System.Collections.Generic.List`1 [MyProj.ViewModels.MyViewViewModel]», но для этого словаря требуется элемент модели типа «EbanTabs.Models.Autocomplete».

Сообщение об ошибке сообщает мне, что модель неправильная, когда визуализируется частичное представление.

Как мне избежать этой проблемы? Я видел, что некоторые ответы * Несколько моделей MVC 5 в одном представлении *, которые используют сложную модель представления с двумя классами.

Я думаю, что такой подход усложнит мое решение, потому что мне придется создавать много сложных моделей при рендеринге данных в моем представлении.

Есть ли лучший подход, чем упомянутый?

заранее спасибо.


person J Smith    schedule 30.03.2018    source источник
comment
Используйте модель aview или используйте @Html.Partial("_LoginPartial", new LoginModel()) или @Html.Action(actionName, controllerName) для вызова [ChildActionOnly] метода контроллера, который возвращает частичное представление   -  person    schedule 30.03.2018
comment
привет Стивен, не могли бы вы написать пример? Я новичок в MVC   -  person J Smith    schedule 30.03.2018
comment
Но почему вы создаете форму входа в свой макет - пользователь входит в систему только один раз, поэтому вы без необходимости генерируете дополнительный html.   -  person    schedule 30.03.2018
comment
извините, исправлю. loginpartial - это не то представление, с которым у меня проблемы, это @ Html.Partial (_TipoProyectoSearch)   -  person J Smith    schedule 30.03.2018
comment
Тогда просто используйте @Html.Partial("_TipoProyectoSearch", new Autocomplete())   -  person    schedule 30.03.2018
comment
извините за мой вопрос, но когда я использую @ Html.Partial (_TipoProyectoSearch, new Autocomplete ()) в моем макете, отсутствует ссылка на Autocomplete   -  person J Smith    schedule 30.03.2018
comment
Если вам нужно инициализировать новый Autocomplete и установить его свойства, используйте Html.Action(), как указано выше (и в дублировании)   -  person    schedule 30.03.2018
comment
Обратитесь к этому ответу для другого примера   -  person    schedule 30.03.2018