下面是控制器:
public class HomeController : Controller
{
public ViewResult Index() => View("SimpleForm");
public ViewResult ReceiveForm(string name, string city) => View("Result", $"{name} lives in {city}");
}
和SimpleForm.cshtml是:
<form method="post" asp-action="ReceiveForm">
<div class="form-group">
<label for="name">Name:</label>
<input class="form-control" name="name" />
</div>
<div class="form-group">
<label for="name">City:</label>
<input class="form-control" name="city" />
</div>
<button class="btn btn-primary center-block" type="submit">Submit</button>
</form>
因此,当我运行该应用程序时,将使用默认的Index操作,因此,我填写了表单并单击Submit按钮以触发发布请求并直接转到ReceiveForm操作,该操作将结果显示在视图中。所以现在我的浏览器上的URL是/ Home / ReceiveForm,我重新加载了一个浏览器,并意识到触发了一个新的发布请求,但是为什么它是发布请求,应该是一个获取请求吗?重启浏览器不是和将/Home/ReceiveForm
复制到浏览器的地址栏中并按Enter一样,总是触发获取请求吗?
答案 0 :(得分:0)
您将发布到ReceiveForm
操作,然后该操作返回视图。而是执行以下操作:
httpGet
的{{1}}版本ReceiveForm
的{{1}}版本httpPost
版本操作加载用户界面ReceiveForm
版本操作httpGet
版本以再次加载UI。要将重定向期间的数据(例如结果)从httpPost
发送到HttpGet
操作,可以使用Post
对象。