我的控制器中有以下代码:
[HttpPost]
[Route("SetLanguage")]
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);
}
此代码有一些参数,我不知道如何传递它们。
打算使用此
<form id="selectLanguage" asp-controller="Home" asp-action="SetLanguage" asp-route-returnUrl="@Context.Request.Path" method="post" class="form-horizontal" role="form">
@Localizer["Language:"] <select name="culture" asp-for="@requestCulture.RequestCulture.UICulture.Name" asp-items="cultureItems">
</select>
</form>
但是由于缺乏经验,我无法在我的项目中开始使用此代码。
作为解决方案,我将发出POST请求并在附加cookie后更新页面。
@Html.DropDownList("selectLanguage", cultureItems, new { @onchange = send post reqest and update on success })
[谁能解释我tp如何将参数(culture
和returnUrl
)传递给我的SetLanguage
方法?
您可以使用POST
将数据按以下格式JavaScript
传送到控制器,>
var data = {
culture: "culture",
returnUrl: "returnUrl"
}
$.ajax({
type: "POST",
url: "https://YourEndPointURL/SetLanguage",
data: JSON.stringify(data ),
dataType: "json",
contentType: "application/json",
success: function (data) {
console.log(data);
}
});
或者您可以这样实现smth。