使用 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 中设置变量的正确方法是什么?

我认为你走错了方向。这样做

  1. name 放入您的 model
  2. 中的 属性
  3. Html.HiddenForname
  4. 创建隐藏
  5. onClick
  6. 上用 javascript 更改隐藏字段的值
  7. 表单发布后,您的模型中就有了名称的新值,您不再需要 new { name = _name }

而不是在你的模型中使用 namehiddenfor 你可以使用它作为替代

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