gpt4 book ai didi

c# - 如何通过 ASP.NET Core 中的链接进行 POST

转载 作者:太空狗 更新时间:2023-10-29 17:47:40 24 4
gpt4 key购买 nike

我尝试通过链接 POST 到 SetLanguage 操作,但不确定如何完成以下代码:

<form id="selectLanguage" asp-controller="Home" asp-action="SetLanguage" asp-route-returnUrl="@Context.Request.Path" method="post" role="form">
@foreach (var culture in cultures) {
<div>
<a href="?culture=@culture.Name">@culture.Name</a>
</div>
}
</form>

我应该使用 form 还是有一个直接的方法来发送带有 culture : 'EN' 参数的 POST,例如?

@Url.Action(action: "SetLanguage", controller:"Home", values: new { culture = culture.Name }, protocol:"POST") 是否起作用?

我的 Controller 代码是

[HttpPost]
public IActionResult SetLanguage(string culture, string returnUrl)
{
Response.Cookies.Append(
CookieRequestCultureProvider.DefaultCookieName,
CookieRequestCultureProvider.MakeCookieValue(new RequestCulture(culture)),
new CookieOptions { Expires = DateTimeOffset.UtcNow.AddYears(1) }
);

return LocalRedirect(returnUrl);
}

最佳答案

链接是 GET 请求。您不能通过链接发帖;这就是表格的用途。你需要这样的东西:

<form id="selectLanguage" asp-controller="Home" asp-action="SetLanguage" asp-route-returnUrl="@Context.Request.Path" method="post" role="form">
@foreach (var culture in cultures) {
<div>
<button type="submit" name="culture" value="@culture.Name">
@culture.Name
</button>
</div>
}
</form>

然后,无论您点击哪个按钮,它的值都会被发布。如果您希望它看起来像链接,您可以相应地设置按钮的样式。

或者,您可以保留链接,但您需要使用 AJAX 在点击后发布。

关于c# - 如何通过 ASP.NET Core 中的链接进行 POST,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46155940/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com