繁体   English   中英

在SharePoint应用程序页面.aspx上使用模型

[英]Use model on SharePoint application page .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 %>" />
<% } %>

我似乎无法使用模型中的详细信息(在ID,名称,占位符等的值中)构造html元素。

另外,我不知道该如何将其发布回服务器。

继续下去有什么好处吗? 在这种情况下,是否还有其他控件/方法更适合与aspx一起使用?

您无法生成这样的HTML标记。 甚至数据绑定表达式也无济于事,因为它们绑定ASP.NET控件的属性值,而不绑定页面中的纯HTML输出。

您应该在“代码背后”中生成标记,如下所示:

页面标记:

<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);
}

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM