【发布时间】:2022-01-25 02:37:59
【问题描述】:
我遇到了 ASP.NET MVC 的问题。我的 POST 控制器方法在 localhost 和测试环境中运行良好,但在登台和生产中,控制器返回 302 状态代码。
之前,控制器是 PUT,返回是 Ok(),但我改为 ReturnToAction()。我无法理解发生了什么......
这是我的控制器:
[Authorize]
public async Task<IActionResult> Index()
{
var filialOriginId = await _user.GetOriginFilial();
if (filialOriginId == null)
return View(@"Views/Company/NotFound.cshtml");
var company = await _companyApplicationService.GetByOriginId(filialOriginId);
return View(company);
}
[Authorize]
[Route("save-company-options")]
[HttpPost]
public async Task<IActionResult> SaveCompanyOptions(RegisterCompanyOptionViewModel registerCompanyOptionViewModel)
{
var filial = await _companyApplicationService.GetByOriginId(await _user.GetOriginFilial());
var company = await _companyApplicationService.RegisterOptions(filial.Id, registerCompanyOptionViewModel);
return RedirectToAction("Index");
}
这是我的观点:
<form asp-controller="Settings" asp-action="SaveCompanyOptions" method="post">
<section class="container">
<div class="card">
<div class="panel__title">
Configurações
</div>
<p class="panel_description">Escolha o endereço da sua página, fontes e cores</p>
<div class="panel_content flex__wrap sm__100 md__100 lg__100 xl__100">
<div class="sm__100 md__100 lg__33 xl__33">
<div id="Url__field"
class="form-floating has-preffix">
<input id="inputUriName"
class="form-control"
type="text"
aria-label="Personalizar URL"
aria-describedby="Personalizar URL"
placeholder="Personalizar URL"
asp-for="@Model.UriName"
required />
<label class="form-label" for="inputUrlPagina">Personalizar URL</label>
<span class="input__preffix">@AppSettingsConfiguration.UrlBNE.Replace("https://", "")/jobs/</span>
<div class="invalid-feedback"></div>
</div>
</div>
<div class="sm__100 md__50 lg__33 xl__33">
<div class="form-floating">
<select class="form-select"
id="selectTypography"
asp-for="Typography"
required>
</select>
<label for="selectTypography">Tipografia</label>
<script>
setTimeout(function () {
$("#selectTypography option[value='@Model.Typography']").prop('selected', true);
}, 1000);
</script>
</div>
</div>
<div class="sm__100 md__50 lg__33 xl__33">
<div id="InputColor" class="form-floating">
<input id="ChangeColor"
class="form-control"
type="text"
aria-label="Alterar Cor"
aria-describedby="Altrar Cor"
placeholder="Alterar Cor"
asp-for="Color"
value="@(string.IsNullOrEmpty(Model.Color) ? "#00796B" : Model.Color)" />
<label class="form-label" for="selectTypography">Alterar Cor</label>
</div>
</div>
</div>
</div>
</section>
<section id="Description" class="container">
<div class="card">
<div class="flex flex__wrap sm__100 md__100 lg__100 xl__100">
<div class="panel__title">
Como é trabalhar na @Model.Name?
<div class="form-check form-switch">
@Html.CheckBoxFor(m => m.ShowTitle,new { @class="form-check-input"} )
<label class="form-check-label" for="checkHow"></label>
</div>
</div>
</div>
<p class="panel_description">Escolha o endereço da sua página, fontes e cores</p>
<div class="form-floating panel_content">
<textarea id="HowIsText" class="editor" asp-for="Title">@Model.Title</textarea>
</div>
</div>
</section>
<section class="container">
<div class="card ">
<div class="flex flex__wrap sm__100 md__100 lg__100 xl__100">
<div class="panel__title">
Video institucional
<div class="form-check form-switch">
@Html.CheckBoxFor(m => m.ShowVideo,new { @class="form-check-input"} )
<label class="form-check-label" for="ckechVideo"></label>
</div>
</div>
<p class="panel_description">Sua empresa tem um vídeo sobre a cultura interna? Mostre-o aqui</p>
</div>
<div class="panel_content flex flex-wrap">
<div class="sm__100 md__100 lg__50 xl__50">
<div class="form-floating">
<input id="urlVideo"
class="form-control"
type="text"
aria-label="Link do Vídeo"
aria-describedby="Link do Vídeo"
placeholder="Link do Vídeo"
value="@Model.UrlVideo"
asp-for="UrlVideo"
required />
<label class="form-label" for="inputNome">Link do Vídeo</label>
<div class="invalid-feedback">
</div>
</div>
</div>
<div class="sm__100 md__100 lg__50 xl__50">
<div class="form-floating">
<input id="urlChannel"
class="form-control"
type="text"
aria-label="Link do Canal"
aria-describedby="Link do Canal"
placeholder="Link do Canal"
value="@Model.TwitterUrl"
asp-for="TwitterUrl"
required />
<label class="form-label" for="inputNome">Link do Canal</label>
<div class="invalid-feedback">
</div>
</div>
</div>
</div>
</div>
</section>
<section class="container Media d-none">
<div class="card ">
<div class="flex flex__wrap sm__100 md__100 lg__100 xl__100">
<div class="panel__title">
Video institucional
<div class="form-check form-switch">
@Html.CheckBoxFor(m => m.ShowSubtitle,new { @class="form-check-input"} )
<label class="form-check-label" for="checkWhy"></label>
</div>
</div>
<p class="panel_description pb-3">Sua empresa tem um vídeo sobre a cultura interna? Mostre-o aqui</p>
</div>
<div class="form-floating panel_content">
<textarea id="whyWork" class="editor" asp-for="Subtitle">@Model.Subtitle</textarea>
</div>
</div>
</section>
<section class="container">
<div class="card ">
<div class="flex flex__wrap sm__100 md__100 lg__100 xl__100">
<div class="panel__title">
Profissões que contratamos
<div class="form-check form-switch">
@Html.CheckBoxFor(m => m.ShowJobs,new { @class="form-check-input"} )
<label class="form-check-label" for="checkJobs"></label>
</div>
</div>
</div>
<p class="panel_description pb-3">Exibir lista de vagas na sua página inicial</p>
</div>
</section>
<section class="container d-none">
<div class="card">
<div class="flex flex__wrap sm__100 md__100 lg__100 xl__100">
<div class="panel__title">
Dúvidas Frequentes
<div class="form-check form-switch">
@Html.CheckBoxFor(m => m.ShowFaq,new { @class="form-check-input"} )
<label class="form-check-label" for="checkFAQ"></label>
</div>
</div>
</div>
</div>
</section>
<section class="container">
<div class="card flex flex__wrap sm__100 md__100 lg__100 xl__100">
<div class="flex flex__wrap sm__100 md__100 lg__100 xl__100">
<div class="panel__title">
Redes Sociais
<div class="form-check form-switch">
@Html.CheckBoxFor(m => m.ShowSocial,new { @class="form-check-input"} )
<label class="form-check-label" for="checkSocial"></label>
</div>
</div>
<p class="panel_description">Escolha o endereço da sua página, fontes e cores</p>
</div>
<div class="panel_content flex flex__wrap sm__100 md__100 lg__100 xl__100">
<div class="sm__100 md__50 lg__25 xl__25">
<div class="form-floating">
<input id="socialFb"
class="form-control"
type="text"
aria-label="Facebook"
aria-describedby="input-Facebook"
placeholder="Facebook"
value="@Model.FacebookUrl"
asp-for="FacebookUrl"
required />
<label class="form-label" for="inputNome">Facebook</label>
<div class="invalid-feedback">
</div>
</div>
</div>
<div class="sm__100 md__50 lg__25 xl__25">
<div class="form-floating">
<input id="socialLi"
class="form-control"
type="text"
aria-label="Linkedin"
aria-describedby="input-Linkedin"
placeholder="Linkedin"
value="@Model.LinkedinUrl"
asp-for="LinkedinUrl"
required />
<label class="form-label" for="inputNome">Linkedin</label>
<div class="invalid-feedback">
</div>
</div>
</div>
<div class="sm__100 md__50 lg__25 xl__25">
<div class="form-floating">
<input id="socialIg"
class="form-control"
type="text"
aria-label="Instagram"
aria-describedby="input-Instagram"
placeholder="Instagram"
value="@Model.InstagramUrl"
asp-for="InstagramUrl"
required />
<label class="form-label" for="inputNome">Instagram</label>
<div class="invalid-feedback">
</div>
</div>
</div>
<div class="sm__100 md__50 lg__25 xl__25">
<div class="form-floating">
<input id="socialTw"
class="form-control"
type="text"
aria-label="Twitter"
aria-describedby="Twitter"
placeholder="Twitter"
value="@Model.TwitterUrl"
asp-for="TwitterUrl"
required />
<label class="form-label" for="inputNome">Twitter</label>
<div class="invalid-feedback">
</div>
</div>
</div>
</div>
</div>
<div class="btn__company">
<button id="btnSaveCompanyOptions" onclick="saveAllSettings()" type="submit">SALVAR ALTERAÇÕES</button>
</div>
</section>
</form>
【问题讨论】:
-
302 是 RedirectToAction 所做的重定向
-
是的,但为什么本地控制器工作正常?
-
什么不起作用?您的浏览器应遵循重定向。你是说没有?
-
是的,控制器需要执行方法,完成后,她需要重定向到Index。在测试和本地方面,她工作得很好,但在分期和生产方面却不行。对不起我的英语不好。
-
浏览器应该在本地和生产中遵循服务器重定向指令。实际问题是什么?您是否对操作进行 API 类型调用?在您看来
saveAllSettings()方法中可能是一个问题,但您没有显示该代码
标签: c# html asp.net-mvc http controller