我正在开发一个小型Web应用程序,我需要帮助跟踪状态。
此应用程序以随机方式(一次一个)向用户提出几个问题。但是,要做到这一点,我需要知道哪个问题已经得到解答(所以我不重复任何问题)以及用户是否做对了。
我需要知道用户是否得到了最后一个问题,因为如果他出错了,应用程序会从不同的列表中提出一个随机问题。
为此,我创建了这个类" state"在控制器中应该跟踪事物。
public class state
{
public string via { get; set; }
public string previousQuestionList { get; set; }
public string currentQuestionList { get; set; }
public string leftButton { get; set; }
public string rightButton { get; set; }
public List<Question> previousQuestions { get; set; }
public Question currentQuestion { get; set; }
public bool lastAnswer { get; set; }
}
因此,当用户第一次进入页面时,控制器会向视图发送默认信息并构建页面。
public ActionResult Index()
{
state currentState = new state();
currentState.currentQuestion = new Question();
currentState.currentQuestion.description = "Qual a via do seu cartão?";
currentState.currentQuestion.aplicabilidade = true;
currentState.leftButton = "1a Via";
currentState.rightButton = "2a Via";
return View(currentState);
}
视图如下:
html代码是这样的:
@{
ViewBag.Title = "Sistema de Script de Desbloqueio";
}
@model Sistema_de_Script_de_Desbloqueio.Controllers.HomeController.state
<div class="jumbotron">
<h1>@Model.currentQuestion.description</h1>
</div>
<form name="Formulário" action="~/Views/Home/Index.cshtml" method="post">
@if (Model.currentQuestion.aplicabilidade == true)
{
<div class="row">
<div class="col-md-6">
<div class="btn btn-primary btn-group-justified" role="group"><h2>@Model.leftButton</h2></div>
</div>
<div class="col-md-6">
<div class="btn btn-warning btn-group-justified" role="group"><h2>@Model.rightButton</h2></div>
</div>
</div>
}
else
{
<div class="row">
<div class="col-md-4">
<div class="btn btn-primary btn-group-justified" role="group"><h2>@Model.leftButton</h2></div>
</div>
<div class="col-md-4">
<div class="btn btn-warning btn-group-justified" role="group"><h2>@Model.rightButton</h2></div>
</div>
<div class="col-md-4">
<div class="btn btn-default btn-group-justified" role="group"><h2>N/A</h2></div>
</div>
</div>
}
</form>
我的想法是用户按下其中一个按钮并发送课程对象&#34;状态&#34; (型号)返回按下按钮的信息到控制器。
有可能吗?
答案 0 :(得分:1)
我使用了&#34; elolos&#34;并使用&#34; Session&#34;保持约会并且工作得很好。
[HttpPost]
public ActionResult Index(string lastButton)
{
state currentState = Session["currentState"] as state;
//Some code here
return View(currentState);
}
然后在&#34; Post&#34;方法我从&#34; currentState&#34;
中检索了信息g.translate(camera.x-(width/2),camera.y-(height/2);
谢谢。
答案 1 :(得分:0)
最简单的方法是从您正在创建的视图中执行简单的Postback
或AJAX POST
。
添加最后一个按钮的属性,点击模型:
public string LastClickedButton { get; set; }
然后将ActionResult添加到POST:
public ActionResult IndexPost(state postedState)
{
//Do stuff.
}
从视图执行POST:
@{
ViewBag.Title = "Sistema de Script de Desbloqueio";
}
@model Sistema_de_Script_de_Desbloqueio.Controllers.HomeController.state
<div class="jumbotron">
<h1>@Model.currentQuestion.description</h1>
</div>
<form name="Formulário" action="~/Views/Home/Index.cshtml" method="post">
@if (Model.currentQuestion.aplicabilidade == true)
{
<div class="row">
@using (@Html.BeginForm("IndexPost", "Home"))
{
<div class="col-md-6">
<div class="btn btn-primary btn-group-justified" role="group"><h2>@Model.leftButton</h2></div>
</div>
@Html.Hidden("LastClickedButton", @Model.leftButton);
}
@using (@Html.BeginForm("IndexPost", "Home"))
{
<div class="col-md-6">
<button class="btn btn-warning btn-group-justified" role="group" type="submit"><h2>@Model.rightButton</h2></div>
</button>
@Html.Hidden("LastClickedButton", @Model.rightButton);
}
</div>
}
else
{
<div class="row">
<div class="col-md-4">
<button class="btn btn-primary btn-group-justified" role="group" type="submit"><h2>@Model.leftButton</h2></button>
</div>
<div class="col-md-4">
<div class="btn btn-warning btn-group-justified" role="group"><h2>@Model.rightButton</h2></div>
</div>
<div class="col-md-4">
<div class="btn btn-default btn-group-justified" role="group"><h2>N/A</h2></div>
</div>
</div>
}
</form>
这完全是因为您需要发送收到的所有信息,因此会产生许多冗余的@Html.Hidden
/ @Html.HiddenFor
。
另一种方法是将Controller操作更改为:
public ActionResult IndexPost(state postedState, string clickedButton)
{
//Do anything you need with clickedButton
}
通过route
发布clickedButton:
@using (@Html.BeginForm("IndexPost", "Home", new { clickedButton = @Model.rightButton }))
{
<div class="col-md-6">
<button class="btn btn-warning btn-group-justified" role="group" type="submit"><h2>@Model.rightButton</h2></div>
</button>
}