我有一个按钮,点击后会改变变量_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应该说&#34;你好,John Doe!&#34;。使用Razor在HTML中设置变量的正确方法是什么?
答案 0 :(得分:3)
我认为你的方向错了。这样做
name
放入model
Html.HiddenFor
name
javascript
onClick
更改隐藏字段的值
new { name = _name }
而不是在您的模型中使用name
而hiddenfor
可以将此作为替代
Html.Hidden("name", ViewData("name"))
然后为你的链接制作这个隐藏值的网址
同样使用
RouteData
对您的目的不是一个好主意,我建议使用ViewData["xxx"]
代替