如何获取具有非静态名称的参数列表 anp.net.mvc-5 C#

How to take list of arguments with non static names anp.net.mvc-5 C#

我需要在调查中创建一些 RadioButton 组。为了让它们处于不同的组中,我在执行 foreach 语句时创建了名称。它们的名字都以相同的开头。有我的代码

@foreach (var answer in Model.PossibleAnswers)
{
    <div class="col-xs-2">
    @Html.RadioButtonMatrix(answer.IdAspect.ToString(), answer.IdAspect)
    </div>
}

还有我的自定义方法Html Helper

public static HtmlString RadioButtonMatrix(this HtmlHelper helper, 
                                           string target, 
                                           int value)
{
    StringBuilder sb = new StringBuilder("SelectedValue.");
    sb.Append(target);

    string radioButton = 
      String.Format("<input name=\"" + sb + "\" type=\"radio\" value=\"{0}\"/>", value);

    return new HtmlString(radioButton);
}

那么,是否可以在控制器方法中创建一个非静态参数名称? 我找到了这样的属性,但假设这不是我需要的

[HttpPost]
public void GetAnswersMatrix([Bind(Prefix="SelectedValue")]List<String> selectedValues)
{
}

感谢您的帮助!

我建议使用以下数据结构来帮助您解决更多问题:

class QuizModel
{
    public string HowMuchDoYouLikeCSharp {get;set;}
    public string HowMuchDoYouLikeCPlusPlus {get;set;}
}

public class QuizQuestion
{
    public string Question { get; set; }
    public string QuestionModelProp {get;set;} //This must match a prop name in the QuizModel
    public List<string> PossibleAnswers { get; set; }

    public string generateHTML()
    {
        StringBuilder ret = new StringBuilder();
        ret.Append("<div>"+Question+"</div>");
        foreach (string answer in PossibleAnswers)
        {
            ret.Append(String.Format(@"<input name='{0}' type='radio' value='{1}'/>{1}<br/>", QuestionModelProp, answer));
        }

        return ret.ToString();
    }
}

[HttpPost]
public ActionResult SubmitAction(QuizModel quizData)
{      
    string HowMuchDoYouLikeCSharp = quizData.HowMuchDoYouLikeCSharp;
    string HowMuchDoYouLikeCPlusPlus = quizData.HowMuchDoYouLikeCPlusPlus;
}

您将需要进行一些修改以满足您的需要,但这应该会给您一个很好的起点,甚至包括一个基本的答案随机发生器。为了保持形式安全,最好将答案和问题的形式值视为哈希或 guid 而不是文字字符串,但这是另一个问题的问题。

特别注意,由于问题和答案在同一个class,因此很容易在答案迭代时根据问题创建单选组。

编辑:修改了代码以更贴近您的需要,还包括一个模型作为示例。