我想知道如何使用 @{
ViewBag.Title = "ClickCounter";
}
<h2>ClickCounter</h2>
@using (@Html.BeginForm())
{
<!-- form content here -->
@Session["num"] = 0;
<form method="post">
<fieldset>
<legend>Button clicks counter</legend>
<div>
<label for="Clciks">Clicks:</label>
<h2>@Session["num"]</h2>
</div>
<div>
<label> </label>
<input type="submit" value="Click!" class="submit" />
</div>
</fieldset>
</form>
}
计算我的视图中的按钮被点击的次数,而不是使用jQuery,只是asp.net。
这是我的动作方法(空):
{{1}}
和我的观点:
{{1}}
请原谅我的蹩脚问题,但我是一个完整的新手,并试图了解这些东西是如何工作的。我试过googleing。 我只想在视图中使用会话显示h2中的点击次数。
任何提示都将受到赞赏。
答案 0 :(得分:1)
如果只是为了增加表单提交上的点击次数,您可以更新http post action方法以读取会话值(如果存在)并增加并重新设置。如果不存在,请将其初始化。
const string sessionVariableName = "num";
public ActionResult ClickCounter()
{
if (Session[sessionVariableName] == null)
{
Session[sessionVariableName] = 0;
}
return View();
}
[HttpPost]
public ActionResult ClickCounter(string dummyParam)
{
if (Session[sessionVariableName] == null) // should not happen!
{
Session[sessionVariableName] = 0;
}
else
{
var n = (int)Session[sessionVariableName];
n++;
Session[sessionVariableName] = n;
}
return View();
}
确保您在提交时使用GET表单方法。
您还需要删除此行@Session["num"] = 0;
视图中的(重新)初始化,因为我们在action方法中执行此操作。此外,您不应该使用嵌套表单,因为它无效。 Html.BeginForm
帮助器将呈现表单标记的标记。因此,请删除您拥有的内部表单标记。
答案 1 :(得分:1)
您已将此问题标记为asp.net-mvc,为什么不利用该框架?
<强>模型强>
class MyModel
{
public int ClickCount { get; set; }
}
查看强>
@model MyModel
@{
ViewBag.Title = "ClickCounter";
}
<h2>@ViewBag.Title</h2>
<form method="post">
<!-- hidden input of the current click count -->
@Html.HiddenFor(m => m.ClickCount)
<fieldset>
<legend>Button clicks counter</legend>
<div>
@Html.LabelFor(m => m.ClickCount)
<h2>@Model.ClickCount</h2>
</div>
<div>
<button type="submit">Submit!</button>
</div>
</fieldset>
</form>
<强>控制器强>
const string clickCountSessionKey = "clickCount";
[HttpGet]
public ActionResult ClickCounter()
{
// initialize the model
var model = new MyModel() { ClickCount = 0 };
var previousClickCount = Session[clickCountSessionKey];
if (previousClickCount != null)
{
model.ClickCount = (int)previousClickCount;
}
return View(model);
}
[HttpPost]
public ActionResult ClickCounter(MyModel model)
{
// increment the click count of the model
model.ClickCount++;
// track the click count in the session
Session[clickCountSessionKey] = model.ClickCount;
return View(model);
}