在 _Layout 文件中按下按钮时,如何在 Razor Pages 中创建 cookie?
How can I create a cookie in Razor Pages when a button is pressed in the _Layout file?
我是 Razor 页面的新手,在没有控制器的情况下无法解决这个问题。我通常理解如果这是一个普通的剃刀页面,我可以只向 PageModel 添加一个 OnPost 方法,但是对于 _Layout,我的理解是不应该有 PageModel,因为它会与使用 [=12 调用的 PageModel 发生冲突=]
我想做这样的事情:
_Layout.cshtml:
<!DOCTYPE html>
<html>
<head>
<title> @ViewData["Title"] </title>
</head>
<body>
<partial name="_TopNavigation" />
<div>
<button type="button" asp-page-handler="Dismissed"></button>
</div>
<div class="content">
<div>
@RenderBody()
</div>
</div>
</body>
</html>
按下按钮时,我想添加服务器端 cookie。像这样:
addCookie.cs :
public IActionResult onPostDismissed()
{
Response.Cookies.Append("MyCookie", "value1", cookieOptions);
}
我希望按钮出现在每个页面上,这就是我将它添加到 _Layout 的原因,但是我一直无法弄清楚在哪里可以添加代码来处理它。另外,我知道使用 javascript 这会相当简单,但我特别想设置 cookie 服务器端。
如果要在布局页面中调用handler方法。我建议您可以尝试使用其处理程序创建一个新的 razor 页面以添加响应 cookie。
然后您可以在页面中设置表单的 asp-page 属性,让按钮调用该处理程序方法。
更多详情,您可以参考以下代码:
在布局页面中添加以下代码:
<form method="post" asp-page="/Dismissed">
<button type="submit" value="Click">Click Me To Add Cookie</button>
</form>
创建一个名为 Dismissed 的新剃刀页面并将以下代码添加到其页面模型中
public void OnPost() {
int i = 0;
Response.Cookies.Append("MyCookie", "value1");
}
结果:
我是 Razor 页面的新手,在没有控制器的情况下无法解决这个问题。我通常理解如果这是一个普通的剃刀页面,我可以只向 PageModel 添加一个 OnPost 方法,但是对于 _Layout,我的理解是不应该有 PageModel,因为它会与使用 [=12 调用的 PageModel 发生冲突=]
我想做这样的事情:
_Layout.cshtml:
<!DOCTYPE html>
<html>
<head>
<title> @ViewData["Title"] </title>
</head>
<body>
<partial name="_TopNavigation" />
<div>
<button type="button" asp-page-handler="Dismissed"></button>
</div>
<div class="content">
<div>
@RenderBody()
</div>
</div>
</body>
</html>
按下按钮时,我想添加服务器端 cookie。像这样:
addCookie.cs :
public IActionResult onPostDismissed()
{
Response.Cookies.Append("MyCookie", "value1", cookieOptions);
}
我希望按钮出现在每个页面上,这就是我将它添加到 _Layout 的原因,但是我一直无法弄清楚在哪里可以添加代码来处理它。另外,我知道使用 javascript 这会相当简单,但我特别想设置 cookie 服务器端。
如果要在布局页面中调用handler方法。我建议您可以尝试使用其处理程序创建一个新的 razor 页面以添加响应 cookie。
然后您可以在页面中设置表单的 asp-page 属性,让按钮调用该处理程序方法。
更多详情,您可以参考以下代码:
在布局页面中添加以下代码:
<form method="post" asp-page="/Dismissed">
<button type="submit" value="Click">Click Me To Add Cookie</button>
</form>
创建一个名为 Dismissed 的新剃刀页面并将以下代码添加到其页面模型中
public void OnPost() {
int i = 0;
Response.Cookies.Append("MyCookie", "value1");
}
结果: