C# 使用Razor单击按钮时如何设置变量?
我有一个按钮,单击该按钮时,将更改变量C# 使用Razor单击按钮时如何设置变量?,c#,asp.net-mvc,razor,C#,Asp.net Mvc,Razor,我有一个按钮,单击该按钮时,将更改变量\u name的值。但是当我单击更改名称然后单击刷新时,这不起作用 查看 @{ var _name = ViewContext.RouteData.Values["name"].ToString(); } <div> <h1>Hello, @name!</h1> <button type="button" onclick="@(_name = "John Doe")">Change N
\u name
的值。但是当我单击更改名称
然后单击刷新
时,这不起作用
查看
@{
var _name = ViewContext.RouteData.Values["name"].ToString();
}
<div>
<h1>Hello, @name!</h1>
<button type="button" onclick="@(_name = "John Doe")">Change Name</button>
<button type="button" onclick="location.href = '@Url.Action("MyAction", new { name = _name })'">Refresh</button>
</div>
刷新时,h1应该说“你好,John Doe!”。使用Razor在HTML中设置变量的正确方法是什么?我认为您走错了方向。这样做
名称
放入模型的属性中
Html.HiddenFor
为name
onClick上的javascript
更改隐藏字段的值
new{name=\u name}
name
和hiddenfor
Html.Hidden("name", ViewData("name"))
然后通过这个隐藏值为您的链接创建url
另外,使用RouteData
对您来说不是一个好主意,我建议您改用ViewData[“xxx”]
我认为你走错了方向。这样做
名称
放入模型的属性中
Html.HiddenFor
为name
onClick上的javascript
更改隐藏字段的值
new{name=\u name}
name
和hiddenfor
Html.Hidden("name", ViewData("name"))
然后通过这个隐藏值为您的链接创建url
另外,使用RouteData
对您来说不是一个好主意,我建议您改用ViewData[“xxx”]
我认为您混淆了服务器端和客户端逻辑。服务器上存在razor变量,并且仅在当前请求期间存在。当我按下刷新按钮时,
Url.Action()
不发送新值吗@半径onclick=“@(_name=“John Doe”)”
不会在客户端单击上设置服务器端变量\u name
。所有服务器端代码在HTML(没有任何服务器端代码,只有代码结果)发送到浏览器之前执行。我认为您混淆了服务器端和客户端逻辑。服务器上存在razor变量,并且仅在当前请求期间存在。当我按下刷新按钮时,Url.Action()
不发送新值吗@半径onclick=“@(_name=“John Doe”)”
不会在客户端单击上设置服务器端变量\u name
。所有服务器端代码在HTML(没有任何服务器端代码,只有该代码的结果)发送到浏览器之前执行。为了简单起见,我精简了代码,但是如果我已经传入(比方说)一个食品模型呢?在那个模型上加上这个名字并不理想,因为它是人的名字,而不是食物的名字。我会试试这个,会让你知道的。谢谢在实施此更改之前,请查看并了解ViewData的工作原理!为了简单起见,我简化了我的代码,但是如果我已经传递了一个食物模型呢?在那个模型上加上这个名字并不理想,因为它是人的名字,而不是食物的名字。我会试试这个,会让你知道的。谢谢在实施此更改之前,请查看并了解ViewData的工作原理!