2016-06-14 53 views
2

我正在使用基本上是aspx页面的应用程序页面创建反馈调查问卷表单。在SharePoint应用程序页面上使用模型.aspx

我希望通过尽可能模仿MVC来做到这一点。我已经成立了我的代码隐藏模型:

public List<QuestionViewModel> modelQuestions = new List<QuestionViewModel>(); 

接下来,我需要显示每个问题,并适当输入取决于问题的类型(如单线,多线,单项选择,多项选择)。

我找到了正确显示的问题:

<fieldset class="what-went-wrong"> 
    <% for (int i = 0; i < modelQuestions.Count; i++) { %> 
     <p> 
      <label for="QuestionText"> 
       <% if (modelQuestions[i].Required) { %> 
       <span class="req-field indicator">*</span> 
       <% } %> 
        <%= modelQuestions[i].QuestionText %> 
       <% if (modelQuestions[i].Required) { %> 
       <span class="req-field right">* Required field</span> 
       <% } %> 
      </label> 
     </p> 
    <% } %> 
</fieldset> 

这给予的我这个问题的文本。现在我试图构建适当的输入,但是这<% %>标签不工作的这一点:

<% if(modelQuestions[i].QuestionTypeId == QuestionType.SingleLine) { %> 
    <input id="modelQuestions_<% i %>" name="modelQuestions[<% i %>]" type="text" placeholder="<% modelQuestions[i].Placeholder %>" /> 
<% } %> 

我似乎无法得到它的构造利用模型详细的HTML元素(数值对于身份证,名称,占位符等)

此外,我不知道如何去发布这回到服务器,当我到了那一点。

继续有什么价值吗?在这种情况下使用aspx还有其他控件/方法更合适吗?

+1

可否请您从信息中删除个人故事? –

+0

我会尝试使用asp.net输入而不是html输入或使用中继器。你有没有考虑为你的需要建立一个自定义控件? https://msdn.microsoft.com/en-us/library/ee231548.aspx – Nils

回答

0

您不能像这样生成HTML标记。即使data-binding expressions也无济于事,因为它们绑定了ASP.NET控件的属性值,而不是页面中的纯HTML输出。

您应该会在"code behind"的标记,像这样:

页标记:

<div id='AnswersPanel'> 
<div> 

代码隐藏页:

protected void PageLoad(...) 
{ 
    AnswersPanel.InnerHtml = ""; 
    AnswersPanel.InnerHtml += string.Format("<input id='modelQuestions_{0}' name='modelQuestions[{0}]' type='text' placeholder='{1}' />", 
               i.ToString(), 
               modelQuestions[i].Placeholder); 
} 
相关问题