Использование C # MVC нескольких динамических моделей в представлении - PullRequest
1 голос
/ 23 октября 2019

У меня есть представление с несколькими формами, которые я использую для поиска и отображения результатов в виде частичного представления, например SearchByNumber, SearchByVehicle и т. Д.

Я пытаюсь загрузить представление и выполнить поиск для различныхформы путем публикации ссылки с строкой запроса, например www.example.com/Search?number=101010 из другого представления.

Для первой формы SearchByNumber у меня есть только один параметр, номер строки, и я возвращаю представление с динамическимМодель и она работают так, как и должны, но мне удается только найти эту форму.

Вот мой контроллер:

public ActionResult Index(string number)
{
  return View(model: number);
}

и в представлении, которое у меня есть:

<form id="searchbynumberform">
    Search By Any Number:
    <div class="input-group input-group-sm">
        <input type="text" class="form-control" name="number" id="number" value="@Model">
        <span class="input-group-btn">
            <button class="btn btn-primary" type="button" name="numbersearch" id="numbersearch" disabled>
                Search
            </button>
        </span>
    </div>
</form>

Мой вопрос: если кто-нибудь может мне помочь, как выполнить поиск, скажем, во второй форме, где у меня есть параметры типа int и имени строки?

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

1 Ответ

2 голосов
/ 23 октября 2019

В данный момент ваш Model является только строкой поиска, которая была введена , что кажется довольно неполным. Было бы гораздо больше смысла, если бы Model также содержал фактические результаты поиска , что, в конце концов, и есть то, что пользователь хочет увидеть. И затем вы также можете добавить другие свойства поиска.

Подход MVC для этого заключается в создании класса (View) Model где-то в вашем проекте, что-то вроде этого:

public class SearchModel
{
    public string Number { get; set; }
    public int? Type { get; set; }
    public string Name { get; set; }
    public List<SearchResult> SearchResults { get; set; }
}

А затем используйте его, например, так:

public ActionResult Index(string number)
{ 
    var model = new SearchModel
    {
        Number = number,
        SearchResults = GetByNumber(number)
    };
    return View(model);
}

public ActionResult IndexOther(int type, int name)
{
    var model = new SearchModel
    {
        Type = type,
        Name = name,
        SearchResults = GetByTypeAndName(type, name)
    };
    return View(model);
}

И в вашем Index.cshtml:

@model SearchModel

@* You can now use Model.Number, Model.Type, Model.Name and Model.SearchResults. *@
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...