Asp.net core 为什么RCL(Razor类库)中的表单在asp.net核心中不起作用?
以下是我在前端的代码:Asp.net core 为什么RCL(Razor类库)中的表单在asp.net核心中不起作用?,asp.net-core,.net-core,Asp.net Core,.net Core,以下是我在前端的代码: @model Sample.Models.VistorModel @using Microsoft.AspNetCore.Mvc.Localization @inject IViewLocalizer Localizer <form id="ContactForm" asp-action="Contact"> <div>
@model Sample.Models.VistorModel
@using Microsoft.AspNetCore.Mvc.Localization
@inject IViewLocalizer Localizer
<form id="ContactForm" asp-action="Contact">
<div>
<h3>@Localizer["Name"]</h3>
<span asp-validation-for="Name"></span>
</div>
<input asp-for="Name" placeholder="@Localizer["NameHint"]" />
<div>
<h3>@Localizer["Phone"]</h3>
<span asp-validation-for="Phone"></span>
</div>
<input asp-for="Phone" placeholder="@Localizer["PhoneHint"]" type="tel" />
<button type="submit">@Localizer["Sumit"]</button>
</form>
这是控制器:
using Microsoft.AspNetCore.Mvc;
using System;
using System.Collections.Generic;
using System.Linq;
using System.Threading.Tasks;
namespace Sample.Controllers
{
[Route("{culture}/[controller]")]
public class ContactController : Controller
{
[Route("Contact.html")]
public IActionResult Contact()
{
return View();
}
[HttpPost]
[ValidateAntiForgeryToken]
[Route("Contact.html")]
public IActionResult Contact(Models.VistorModel Vistor)
{
if (ModelState.IsValid)
{
}
return View();
}
}
}
我在控制器中添加了一个断点,并发现当我单击按钮时,public IActionResult联系人(Models.VistorModel Vistor)
从未被调用。它总是只调用公共IActionResult Contact()
我做了另一个测试,将上面的所有代码迁移到一个全新的asp.net核心MVC项目中,效果很好
这个怎么了
对于Fei Han,以下是浏览器中的源html代码:
<form id="ContactForm" asp-action="Contact" method="post">
<div>
<h3>Name</h3>
<span asp-validation-for="Name"></span>
</div>
<input asp-for="Name" placeholder="Your name">
<div>
<h3>Phone</h3>
<span asp-validation-for="Phone"></span>
</div>
<input asp-for="Phone" placeholder="Your phone" type="tel">
<button type="submit">Sumit</button>
</form>
当我单击按钮时,public IActionResult联系人(Models.VistorModel Vistor)
永远不会被调用。它总是只调用公共IActionResult Contact()
请尝试为表单标签设置method=“post”
,如下所示
<form id="ContactForm" method="post" asp-action="Contact">
在我尝试这种方法后,当我单击按钮时,公共IActionResult联系人(Models.VistorModel Vistor)和公共IActionResult Contact()都不会调用。您是否在浏览器开发人员工具中检查了表单
ContactForm
的实际html源代码?根据生成的html源代码,请尝试添加@addTagHelper*,在您的RCL视图中使用Microsoft.AspNetCore.Mvc.TagHelpers
,使表单标记帮助程序正常工作。太棒了!现在可以了!请用这个代码编辑你的答案好吗?谢谢。嗨@Melong,很高兴听到它确实帮助解决了问题。我已经更新了回复,你可以查看。
@await Html.PartialAsync("/Views/Contact/Contact.cshtml")
<form id="ContactForm" method="post" asp-action="Contact">
@addTagHelper *, Microsoft.AspNetCore.Mvc.TagHelpers