使用 Razor 单击按钮时如何设置变量?
How to set variable when button is clicked using Razor?
我有一个按钮,单击它会更改变量 _name
的值。但是当我点击 Change Name
然后点击 Refresh
.
时这不起作用
查看
@{
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>
控制器
public ActionResult MyAction(string name = "default") {
ControllerContext.RouteData.Values["name"] = name;
return View;
}
刷新时,h1 应该显示 "Hello, John Doe!"。使用 Razor 在 HTML 中设置变量的正确方法是什么?
我认为你走错了方向。这样做
- 将
name
放入您的 model
中的 属性
- 用
Html.HiddenFor
为 name
创建隐藏
- 在
onClick
上用 javascript
更改隐藏字段的值
- 表单发布后,您的模型中就有了名称的新值,您不再需要
new { name = _name }
而不是在你的模型中使用 name
和 hiddenfor
你可以使用它作为替代
Html.Hidden("name", ViewData("name"))
然后你的 link 通过这个隐藏值 url
Also using RouteData
is not a good idea for your purpose, I would recommend to use ViewData["xxx"]
instead
我有一个按钮,单击它会更改变量 _name
的值。但是当我点击 Change Name
然后点击 Refresh
.
查看
@{
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>
控制器
public ActionResult MyAction(string name = "default") {
ControllerContext.RouteData.Values["name"] = name;
return View;
}
刷新时,h1 应该显示 "Hello, John Doe!"。使用 Razor 在 HTML 中设置变量的正确方法是什么?
我认为你走错了方向。这样做
- 将
name
放入您的model
中的 属性
- 用
Html.HiddenFor
为name
创建隐藏
- 在
onClick
上用 - 表单发布后,您的模型中就有了名称的新值,您不再需要
new { name = _name }
javascript
更改隐藏字段的值
而不是在你的模型中使用 name
和 hiddenfor
你可以使用它作为替代
Html.Hidden("name", ViewData("name"))
然后你的 link 通过这个隐藏值 url
Also using
RouteData
is not a good idea for your purpose, I would recommend to useViewData["xxx"]
instead