У меня есть действие, которое получает модель типа:Как передать подтип модели к действию от основного действия
ExchangeBooksSearchViewModel : ExchangeBasicSearchViewModel
так, когда я отправляю назад у меня есть данные в этой модели, относящиеся к авторам и т.д. Таким образом, Я прохожу, что вниз в поле зрения:
public ActionResult Books(ExchangeBooksSearchViewModel searchModel, int? page)
{
..
return View("Index", searchModel);
}
..
@model Ui.Mvc.Models.ExchangeBasicSearchViewModel
@{
ViewBag.Title = metaExchange.Index_PageTitle;
ViewBag.ActionName = "Index";
}
@section InlineTitle {<h2>@metaExchange.Index_InlineTitle</h2>
}
@section SearchArea { @Html.Partial("_ItemsSearch_ManagerPartial", Model)}
@Html.Partial("_ItemsList_AjaxPartial", Model)
@section HiddenPostFields { }
@section scripts{}
И затем в течение _ItemsSearch_ManagerPartial я называю действие на отобразить соответствующую поиска Ui для модели:
<div id="AdvancedCategorySearch">
@Html.Action("NonAjaxPostbackCategorySearchDisplay", Model)
</div>
..
[AllowAnonymous]
public ActionResult NonAjaxPostbackCategorySearchDisplay(ExchangeBasicSearchViewModel searchModel)
{
if (searchModel.CategoryAction == "Books")
{
return PartialView("_ItemsSearch_Books", new ExchangeBooksSearchViewModel());
}
if (searchModel.CategoryAction == "Computers")
{
return PartialView("_ItemsSearch_Computers", new ExchangeComputersSearchViewModel());
}
return PartialView("_ItemsSearch_Basic", new ExchangeBasicSearchViewModel());
}
Проблема в том, что к тому времени я получаю
NonAjaxPostbackCategorySearchDisplay(ExchangeBasicSearchViewModel searchModel)
У меня есть только базовый тип ExchangeBasicSearchViewModel к работайте, даже если я попытаюсь использовать:
ExchangeBasicSearchViewModel as ExchangeBooksSearchViewModel
Я получаю null. Это я не понимаю. Я понимаю, что моя точка зрения есть тип модели из
@model Ui.Mvc.Models.ExchangeBasicSearchViewModel
точка которого позволяют подтипы необходимо передать в общей функции зрения, но так как это все еще происходит на сервере, у меня нет понять, где мой подтип был разделен на базовый тип?
В «нормальном» C# вы можете обходить интерфейс и затем при необходимости прибегать к типу, который вам «нужен» в соответствующей точке. Я подозреваю, что это связано с автоматической привязкой к модели, но не с уверенностью, и хотелось бы знать, как обойти это, иначе я подозреваю, что я нахожусь ([n] * поисковые модели) копировать/вставлять код, изменяющийся только для типа модели ,
Надеюсь, это имеет смысл.
Если я это сделать Ui.Mvc.Models.ExchangeBookSearchViewModel то, что мне делать с Ui.Mvc.Models.ExchangeComputerSearchViewModel? Копировать вставить? – rism
что это? вы не упомянули в нем вопрос –