【发布时间】:2018-03-27 05:11:50
【问题描述】:
我有一个使用 xslt 呈现的表单的 xml 模板,如下所示:
xml:
<form-template>
<fields>
<field type="text" required="true" label="Subject" class="form-control" name="subject" subtype="text"></field>
<field type="textarea" required="true" label="Description" class="form-control" name="description" subtype="textarea" rows="3"></field>
</fields>
</form-template>
xsl:
<xsl:template match="/*">
<xsl:for-each select="fields/field">
<xsl:if test="@type='text'">
<label for="{@name}"><xsl:value-of select="@label"/></label>
<input class="form-control" data-val="{@required}" data-val-required="The {@label} field is required." id="{@name}" name="{@name}" type="text" value=""></input>
<span class="field-validation-valid" data-valmsg-for="{@name}" data-valmsg-replace="true"></span>
</xsl:if>
</xsl:for-each>
</xsl:template>
使用自定义 HTMLHelper 呈现表单。
@Html.RenderXml(Model.Template, Server.MapPath("~/Content/form.xslt"))
值存储为名称/值对:
var values = new Dictionary<string, string> {{"subject", "This is the subject"}, {"description", "This is the description"}};
如何将这些值传递给 xsl 并针对 xml 模板中的每个表单字段进行迭代,如果名称与字段名称匹配,则使用该值填充相应的字段。
我已经四处搜索,但看不到如何将数组类型变量传递给 xsl 文件。
我是否将字典转换为节点集并将其作为argumentlist参数传递?
有没有人有任何其他建议或解决方法。一些代码 sn-p 也会很有帮助,因为我不擅长使用 xsl/xml
请注意,我正在尝试在 .Net MVC 中实现这一目标
【问题讨论】:
标签: xml asp.net-mvc xslt