使用Razor点击按钮时如何设置变量?

时间:2015-02-04 15:44:05

标签: c# asp.net-mvc 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应该说&#34;你好,John Doe!&#34;。使用Razor在HTML中设置变量的正确方法是什么?

1 个答案:

答案 0 :(得分:3)

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

  1. name放入model
  2. 的媒体资源中
  3. Html.HiddenFor
  4. 创建隐藏name
  5. 使用javascript
  6. 上的onClick更改隐藏字段的值
  7. 发布表单时,您的模型中有新的name值,而您不再需要new { name = _name }
  8. 而不是在您的模型中使用namehiddenfor可以将此作为替代

    Html.Hidden("name", ViewData("name")) 
    

    然后为你的链接制作这个隐藏值的网址

      

    同样使用RouteData对您的目的不是一个好主意,我建议使用ViewData["xxx"]代替