我是一名C程序员,试图使用Visual Studio 2015 Community Edition学习C#ASP.NET MVC.
因此,我有自己的看法,我想随机显示两个“选择某物”问题之一:
<p>I like to eat
@Html.DropDownList("answers[0]" + Model[0].ToSelectList(), "")
.
</p>
要么
<p>My hair is
@Html.DropDownList("answers[1]" + Model[1].ToSelectList(), "")
.
</p>
但事实证明,我无法弄清楚这两个要求:
>生成50/50随机数
>如果要编写HTML,请使用我们).有人可以朝正确的方向推吗?
另外,我似乎能够不用这种“答案”结构.如果我最后得到的“答案”仅包含索引2、9和33中的数据,是否会传回34个元素的数组(已发布?)
其他信息,我无法评论:
@Christos我不想在问题上增加信息,但是我想我会说10个问题,但是我只希望页面的每个访问者都回答5.所以我要做“显示其中一个两个问题对五对,然后让我的控制器执行此操作:
[HttpPost]
public ActionResult Index(string[] answers)
{
StringBuilder sb = new StringBuilder();
foreach(var response in answers)
{
sb.Append(response);
sb.Append(",");
string responses = sb.ToString();
}
string time = DateTime.Now.ToString();
string output = time + "," + HttpResponseSubstitutionCallback;
StreamWriter sw = new StreamWriter("C:\\Temp\\responses.csv");
sw.WriteLine(output);
sw.Close();
return View();
}
当我选择SQL时,我将能够改进数据库的这种方法,但是现在我对CSV数据非常满意,这对我来说更快,更容易.
根据要求提供OptionModel(请注意:我只是在昨天回家之前向有更多经验的人“借”了此书)
public class OptionModel
{
public string SelectedOption { get; set; }
public List<string> PossibleOptions { get; set; }
public OptionModel(params string[] possibleOptions)
{
PossibleOptions = possibleOptions.ToList();
}
public IEnumerable<SelectListItem> ToSelectList()
{
return PossibleOptions.Select(x => new SelectListItem { Text = x, Value = x });
}
}
解决方法:
您可以尝试这样的事情:
@{
Random rnd = new Random();
// This will return either 1 or 2 randomly.
int question = rnd.Next(1, 3);
}
@if(question==1)
{
<p>I like to eat
@Html.DropDownList("answers" + Model[0].ToSelectList(), "")
</p>
}
else
{
<p>My hair is
@Html.DropDownList("answers" + Model[1].ToSelectList(), "")
</p>
}
当我们使用以@,@ {}开头的块时,我们可以在该块中放置任何有效的c#代码,例如声明变量,方法等,然后再使用它们.