私はFeedbackControllerによって処理されているフィードバックフォームを持つアプリケーションを持っています。Messageという名前のコントローラメソッドのパラメータは禁止されていますか?
@model ClientMessageDto
...
...
<form class="contact-form form-horizontal" asp-action="Enrol" asp-controller="Feedback" asp-anti-forgery="true">
<div class="col-sm-6 col-sm-offset-3">
<div class="form-group">
<label asp-for="Name"></label>
<input asp-for="Name" class="form-control">
</div>
<div class="form-group">
<label asp-for="Email"></label>
<input asp-for="Email" class="form-control">
</div>
<div class="form-group">
<label asp-for="Phone"></label>
<input asp-for="Phone" class="form-control">
</div>
<div class="form-group">
<label asp-for="Message"></label>
<textarea asp-for="Message" class="form-control" rows="2"></textarea>
</div>
<div class="form-group">
<button type="submit" name="submit" class="btn btn-primary btn-lg pull-right">
Send request
</button>
</div>
</div>
</form>
そして、私はこの方法では、いつも私が[FromForm]属性を使用する場合でも、空のフィールドを持つオブジェクト受け、私のフォーム
Route("enrol")]
[HttpPost]
[AllowAnonymous]
[ValidateAntiForgeryToken]
public async Task<IActionResult> Enrol([FromForm]ClientMessageDto message)
{
if (ModelState.IsValid)
{
return RedirectToAction("Index", "Home", new {area = ""});
}
return View(clientMessage);
}
からDTOを受けるべきコントローラメソッドを持っています。 しかし、パラメータ名をmessage以外のもの(messageDtoやclientMessageなどが正しく動作するもの)に変更すると動作します。
それはOKで、「メッセージ」の単語が禁止されているか、私はバグとして報告すべきか?
問題は、あなたが 'Message'とも呼ばれるフォーム値を持っている可能性があり、それは矛盾しています。 – DavidG
'[(名前、電子メール、電話番号、メッセージ)]] ClientMessageDtoのメッセージは助けますか? – Tseng
@DavidGあなたはそうです。両方のメッセージが矛盾しているようです。それらの名前を変更するとこの問題を解決できます。 – Tannheuser