Asp.net MVC3表单,视图中的单个表单。。非强类型-如何分析结果
我有一张表格。。基本上是一份包含18个问题的调查问卷 它们都是单选按钮组(选择1到5) 从组中取出所选radiobutton的最简单方法是什么(每个按钮组都使用相同的名称属性进行设置)Asp.net MVC3表单,视图中的单个表单。。非强类型-如何分析结果,asp.net,asp.net-mvc-3,Asp.net,Asp.net Mvc 3,我有一张表格。。基本上是一份包含18个问题的调查问卷 它们都是单选按钮组(选择1到5) 从组中取出所选radiobutton的最简单方法是什么(每个按钮组都使用相同的名称属性进行设置) 它不是强类型的。。我只是不确定如何访问控制器中的值?在HttpPost操作中,可以接受“”类型作为参数。它将包含您要查找的所有数据。您可以通过包含所有已发布值的访问这些数据: public ActionResult QuestionnaireAction(FormCollection formCollection
它不是强类型的。。我只是不确定如何访问控制器中的值?在HttpPost操作中,可以接受“”类型作为参数。它将包含您要查找的所有数据。您可以通过包含所有已发布值的访问这些数据:
public ActionResult QuestionnaireAction(FormCollection formCollection)
{
foreach (var key in formCollection.AllKeys)
{
var value = formCollection[key];
// etc.
}
foreach (var key in formCollection.Keys)
{
var value = formCollection[key.ToString()];
// etc.
}
}
但是,请务必先阅读本文,因为如果您不了解复选框的工作原理,那么复选框在MVC中可能会很奇怪
它不是强类型的
这是你最大的问题。所以强烈地键入它
。。。当然,要查看模型,请执行以下操作:
public class AnswerViewModel
{
public string Label { get; set; }
public string Value { get; set; }
}
public class QuestionViewModel
{
public string Title { get; set; }
public string Answer { get; set; }
public IEnumerable<string> PossibleAnswers { get; set; }
}
最后是一个问题的编辑器模板,它将为模型集合的每个元素呈现(~/Views/Home/EditorTemplates/QuestionViewModel.cshtml
):
@model QuestionViewModel
@模型名称
@Html.HiddenFor(x=>x.Title)
@foreach(模型中的var项。可能的答案)
{
@RadioButton(x=>x.答案,项目)
@项目
}
嘿,谢谢。。这是有道理的。RadioButtonOn在布局方面有哪些限制?我需要能够控制5个可能答案的显示方式。。填充、宽度等@rwfresh没有限制。你可以随心所欲地布置它们。我不是网页设计方面的专家,但你可以将它们分组,将每个单选按钮应用于特定的CSS类,等等……嗨,达林,我不能让它工作。我的模型有问题和可能的答案。我需要创建RadioButtonGroup,其中名称相同(问题1),并且RadioButton的id将是一些独特的变体。我的模型有一系列问题。你是如何处理这个问题的?
public class HomeController : Controller
{
public ActionResult Index()
{
// TODO: those are obviously going to come from some data store
// or whatever comes to your mind
var model = new[]
{
new QuestionViewModel
{
Title = "Question 1",
PossibleAnswers = new[]
{
"Answer 1 to question 1",
"Answer 2 to question 1"
}
},
new QuestionViewModel
{
Title = "Question 2",
PossibleAnswers = new[]
{
"Answer 1 to question 2",
"Answer 2 to question 2",
"Answer 3 to question 2",
}
},
};
return View(model);
}
[HttpPost]
public ActionResult Index(IEnumerable<QuestionViewModel> questions)
{
// TODO : Process the answers. Here for each element of the
// questions collection you could use the Answer property
// in order to fetch the answer from the user.
return Content("Thqnks for submitting the questionnaire", "text/plain");
}
}
@model IEnumerable<QuestionViewModel>
@using (Html.BeginForm())
{
<div>
@Html.EditorForModel()
</div>
<input type="submit" value="submit answers" />
}
@model QuestionViewModel
<h2>@Model.Title</h2>
@Html.HiddenFor(x => x.Title)
@foreach (var item in Model.PossibleAnswers)
{
@Html.RadioButtonFor(x => x.Answer, item)
@item
}