我有一个表单,其中包含一些需要用户询问的可选问题。在我的模型中,它可能看起来像:
public Dictionary<String, String> Questions { get; set; }
其中键是标签,值是文本框。如何为此创建和填充控件?我是ASP MVC的新手,但是有意义的是这样的东西会内置。
是否有内置方法可以执行此操作,还是我必须自己实现?似乎应该有一个帮助器,因为你真的不想在视图中放置这种代码。
我试过
Html.EditorFor(model => model.Questions);
但它只是向视图吐出“[key,value]”。
答案 0 :(得分:1)
有几种方法可以去这里。
你可以很容易地写自己的帮手 - 也许是这样的:
public static string Question(字典问题) { Html.Label(question.Key); Html.Textbox(question.Value); }
为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
,并对复选框,单选按钮等提出疑问。