У меня есть страница бритвы, получающая потомка PageModel. Для страниц, предназначенных только для выставок (информационные панели, отчеты и т. Д. c), это работает как шарм. Я использую базовый класс PageModel, чтобы сделать так, чтобы все страницы отражали мою конфигурацию хостинга. json, делая ссылки внутри приложения динамическими c.
Итак, иерархия: PageModel -> BasePageModel -> ConfigTransmissorFragModel
Теперь у меня есть эта модель SendingConfiguration (я буду обрабатывать ее на нижнем уровне):
public class SendingConfiguration
{
// I will edit this one
[DisplayName("Send it to production server?")]
public bool ProductionServer { get; set; }
}
PageModel выглядит следующим образом:
// BasePageModel will process the urls of the site.
public class ConfigTransmissorFragModel : BasePageModel
{
public SendingConfiguration SendConfig { get; set; }
private void UpdateSendingConfiguration()
{
var Config = InfoExibicao.ConfigAtiva;
ConfigEnvio.ProductionServer = Config.ProductionServer;
}
private InfoConfiguration _InfoExibition;
public InfoConfiguration InfoExibition
{
get { return _InfoExibition; }
set
{
_InfoExibition = value;
}
}
public ConfigTransmissorFragModel() : base(null)
{
SendConfig = new SendingConfiguration();
}
public ConfigTransmissorFragModel(
ConfigDashboard PConfigDash,
InfoConfiguration PInfoConfig
) : base(PConfigDash)
{
ConfigEnvio = new SendingConfiguration();
this.InfoExibition = PInfoConfig;
UpdateSendingConfiguration();
}
}
Модель генерируется в контроллере:
var Fch = FacadeInfoConfig;
var InfoConfig = Fch.ObterInfoConfiguracao(IdTransmissor);
var CfgDash = ConfigDash;
var Modelo = new ConfigTransmissorFragModel(CfgDash, InfoConfig);
Modelo.UrlServer = ConfigHost.WebServiceUrl;
На странице бритвы у меня есть этот заголовок:
@page
@using ESenderWebService.ModeloPagina
@using Microsoft.AspNetCore.Mvc.RazorPages;
@using Negocio.Integracao.Configuracao;
@model ESenderWebService.ModeloPagina.ConfigTransmissorFragModel
@{
//ViewData["Title"] = "Configuracao de Transmissor para envio";
Layout = "~/Pages/Shared/_Layout_Dashboard.cshtml";
}
Форма:
<form autocomplete="off" asp-controller="InfoConfig" asp-action="SalvarConfig" method="post">
<div class="form-group">
<fieldset>
<legend style="width: auto; margin-bottom: auto;"> Configurações </legend>
<div>
@Html.CheckBoxFor(m => m.SendConfig.ProductionServer)
@Html.LabelFor(m => m.SendConfig.ProductionServer)
</div>
<div>
<button class="btn btn-primary " name="submit" type="submit">Save</button>
</div>
</fieldset>
</div>
</form>
Моя проблема: как получить SendingConfiguration на моем почтовом обработчике?
// This one explodes complaining that HttpContext is missing
[HttpPost()]
public IActionResult SalvarConfig(ConfigTransmissorFragModel PModel)
// This one never reflects what I mark in the form
// It always returns false in PModel.ProductionServer
[HttpPost()]
public IActionResult SalvarConfig([FromForm] SendingConfiguration PModel)
Что я делаю не так?