Ser*_*rge 9 c# asp.net asp.net-core asp.net-core-1.1
我尝试通过链接发布到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>
Run Code Online (Sandbox Code Playgroud)
我应该使用form还是有直接方法culture : 'EN'通过例如发送带有参数的POST ?
是否@Url.Action(action: "SetLanguage", controller:"Home", values: new { culture = culture.Name }, protocol:"POST")做的工作?
我的控制器代码是
[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);
}
Run Code Online (Sandbox Code Playgroud)
链接是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>
Run Code Online (Sandbox Code Playgroud)
然后,无论您单击哪个按钮,其值都会被发布。如果您希望它看起来像链接,则可以相应地设置按钮的样式。
另外,您可以保留链接,但是您需要使用AJAX来发布点击。
| 归档时间: |
|
| 查看次数: |
7966 次 |
| 最近记录: |