В настоящее время я работаю над проектом, в котором я хочу отобразить 2 таблицы веб-сетки для каждой модели. Я нашел много уроков по использованию нескольких моделей в обычном MVC View, но он не работает в Razor View. Я как бы застрял на этом сейчас.
То, что я пробовал до сих пор - 1
Контроллер:
Я пытался использовать динамический ExpandObject для добавления двух списков в это представление, посмотрите код:
public ActionResult Index(int page = 1, string sortApi = "ApiName",string sortCompany = "CompanyName", string sortdir = "asc", string search = "")
{
int pageSize = 13;
int totalRecords = 0;
if (page < 1)
{
page = 1;
}
int skip = (page * pageSize) - pageSize;
ViewBag.TotalRows = totalRecords;
ViewBag.search = search;
//Dynamic ExpandObject
var dataApiRedirects = getRedirects(search, sortApi, sortdir, skip, pageSize, out totalRecords);
var dataCompanies = getCompanies(search, sortCompany, sortdir, skip, pageSize, out totalRecords);
dynamic mymodel = new ExpandoObject();
mymodel.ApiList = dataApiRedirects;
mymodel.CompanyList = dataCompanies;
return View(mymodel);
}
Вид:
<div class="col-sm-1 d-flex align-items-stretch" style="padding-top: 5%;">
<div class="form-group">
<a href="#" class="btn btn-primary" data-toggle="modal" data-target="#myModal">+API</a>
</div>
<!--MODAL-->
<div class="modal fade" id="myModal" >
<div class="modal-dialog" style="width: 20%;">
<div class="modal-content">
<div class="modal-header">
<a href="#" class="close" data-dismiss="modal">×</a>
<h3 class="modal-title">Add API</h3>
</div>
<div class="modal-body">
<form id="myForm">
<p>@Html.TextBoxFor(Model.ApiList.ApiName, new { @class = "form-control", @placeholder = "Name" })</p>
<p>@Html.TextBoxFor(model => model.ApiList.First().Company.CompanyName, new { @class = "form-control", @placeholder = "Company" })</p>
<p>@Html.TextBoxFor(model => model.ApiList.First().ApiURL2, new { @class = "form-control", @placeholder = "URL" })</p>
</form>
</div>
<div class="modal-footer">
<a href="#" class="btn btn-default" data-dismiss="modal">Cancel</a>
<input type="reset" value="Submit" class="btn btn-success" id="btnSubmit" />
</div>
</div>
</div>
</div>
</div>
Однако, когда я хочу создать текстовые поля в моем модале, я получаю следующую ошибку:
То, что я пробовал до сих пор - 2
Я также пытался использовать ViewBag:
Код контроллера:
public ActionResult Index(int page = 1, string sortApi = "ApiName",string sortCompany = "CompanyName", string sortdir = "asc", string search = "")
{
int pageSize = 13;
int totalRecords = 0;
if (page < 1)
{
page = 1;
}
int skip = (page * pageSize) - pageSize;
var dataApiRedirects = getRedirects(search, sortApi, sortdir, skip, pageSize, out totalRecords);
var dataCompanies = getCompanies(search, sortCompany, sortdir, skip, pageSize, out totalRecords);
dynamic mymodel = new ExpandoObject();
mymodel.ApiList = dataApiRedirects;
mymodel.CompanyList = dataCompanies;
//Model 1 data
ViewBag.CompaniesList = dataCompanies;
ViewBag.TotalRows = totalRecords;
ViewBag.search = search;
//Model 2 data
return View(mymodel);
}
HTML код:
var getlist = ViewBag.CompaniesList as IEnumerable<APIBrokerFrontend.Models.Company>;
<div class="modal fade" id="myModalCompany">
<div class="modal-dialog" style="width: 20%;">
<div class="modal-content">
<div class="modal-header">
<a href="#" class="close" data-dismiss="modal">×</a>
<h3 class="modal-title">Add Company</h3>
</div>
<div class="modal-body">
<form id="myForm">
@<p>@Html.TextBoxFor(getlist.First().CompanyName, new { @class = "form-control", @placeholder = "Company Name" })</p>
</form>
</div>
<div class="modal-footer">
<a href="#" class="btn btn-default" data-dismiss="modal">Cancel</a>
<input type="reset" value="Submit" class="btn btn-success" id="btnSubmit" />
</div>
</div>
</div>
</div>
При использовании ViewBag я получаю следующую ошибку:
У кого-нибудь есть решение для этого?
Заранее спасибо!