0

我在 asp.net mvc 4 上做调查系统。如何获取 Controller 中的所有单选按钮数据?

例子

$(document).ready(function(){
   var AnswerCounter = 0;
   $("#answer-add").click(function(){

    var answertext = $("#answer-text").val();
    var answerContent = $('<p>', {
        class:'external',
    });

    var inputAnswer = $('<input>',{
        id:'answer-'+AnswerCounter,
        name:'rb',
        class:'answer-radio'
    }).attr("type","radio").appendTo(answerContent);

    var labelAnswer = $('<label>').attr('for','answer-'+AnswerCounter).text(answertext).appendTo(answerContent);                

    $('#answers').append(answerContent);
    AnswerCounter++;
});

});

您可以在 jquery 创建的示例按钮中看到。所以我可以使用模型绑定。

谢谢。

4

2 回答 2

2

通常为 MVC3 单选按钮生成的 HTML 如下所示

<input name="FeedingTime" id="FeedingTime" type="radio" value="Morning"/>
<input name="FeedingTime" id="FeedingTime" type="radio" value="Afternoon"  checked="checked"/>

当单选按钮组发布时,它将绑定到与名称匹配的变量。

[HttpPost]
public ActionResult Index (string FeedingTime){
  //feeding time here is "Afternoon"
}

所以为了让你的代码正确绑定,

  • 在脚本中设置输入“值”属性的值,以及

  • ActionResult 中有一个与 html 输入元素中的“名称”属性匹配的变量

于 2013-06-16T08:48:03.450 回答
1

编辑:这个答案不再与被问到的问题相关。

要从单选按钮中获取值,您可以像绑定字符串变量一样绑定到它们;假设在你看来你有

@Html.LabelFor(m => m.FeedingTime,"Morning")
@Html.RadioButtonFor(m => m.FeedingTime, "Morning")<br />
@Html.LabelFor(m => m.FeedingTime,"Afternoon")
@Html.RadioButtonFor(m => m.FeedingTime, "Afternoon")<br />
@Html.LabelFor(m => m.FeedingTime,"Night")
@Html.RadioButtonFor(m => m.FeedingTime, "Night")

当您回帖时,您将在字符串变量中捕获它 public ActionResult(..., string FeedingTime, ...){

 }

通常,此变量嵌入在视图模型中,例如

public class AnimalViewModel
{
    public string Name { get; set; }
    public string Type { get; set; }
    public string FavoriteColor { get; set; }
    public string FeedingTime { get; set; }
}

这样当你发布

[HttpPost]
public ActionResult Index(AnimalViewModel viewModel){
  ... 
}

它自动将视图模型绑定到数据。

更直接地回答你的问题。我认为没有办法检测页面上的所有单选按钮输入,您只能检测从单选按钮发布的结果。没有迹象表明发布的字符串曾经是单选按钮的答案。因此,如果您想知道页面上所有单选按钮的值,您只需检查发布的字符串的值。

于 2013-06-16T03:32:19.630 回答