编辑器中的ASP MVC动态字段

时间:2010-05-17 19:15:39

标签: asp.net asp.net-mvc

我有一个表单,其中包含一些需要用户询问的可选问题。在我的模型中,它可能看起来像:

public Dictionary<String, String> Questions { get; set; }

其中键是标签,值是文本框。如何为此创建和填充控件?我是ASP MVC的新手,但是有意义的是这样的东西会内置。

是否有内置方法可以执行此操作,还是我必须自己实现?似乎应该有一个帮助器,因为你真的不想在视图中放置这种代码。

我试过

Html.EditorFor(model => model.Questions);

但它只是向视图吐出“[key,value]”。

2 个答案:

答案 0 :(得分:1)

有几种方法可以去这里。

  1. 你可以很容易地写自己的帮手 - 也许是这样的:

    public static string Question(字典问题) {    Html.Label(question.Key);    Html.Textbox(question.Value); }

  2. Dictionary<string, string>创建一个自定义显示模板(或者更确切地说,将字典换成Question类型以避免含糊不清),输出您想要的内容。

答案 1 :(得分:0)

为什么不实施Question课程? 我有这样的想法:

public class QuestionControl
{
      public int QuestionId{get;set;}
      public string Question{get;set;}
      public string Answer{get;set;}
      public virtual string GetHtml()
      {
           return string.Format("<label for=\"{0}\">{2}</label><br><input type=\"text\" name=\"{0}\" id=\"{0}\" value=\"{1}\">", QuestionId, Answer, Question);
      }
}  

此外,通过这种方式,您可以继承并覆盖GetHtml,并对复选框,单选按钮等提出疑问。