C# 通过jQuery和Razor功能实现动态HTML
使用jQuery,我使用C# 通过jQuery和Razor功能实现动态HTML,c#,jquery,.net,ajax,razor,C#,Jquery,.net,Ajax,Razor,使用jQuery,我使用.append将一组元素动态添加到中。我循环遍历一个表,其中包含我要添加的每个的值。那部分很好用。我遇到的问题是试图将Razor功能添加到元素中 尽管生成的最终结果HTML看起来是语法正确的HTML,但Razor代码不起作用 最终结果HTML: <div id="div_1"> <label>Clients</label> <ul> @if (Model.details != null)
.append将一组
元素动态添加到
中。我循环遍历一个表,其中包含我要添加的每个
的值。那部分很好用。我遇到的问题是试图将Razor功能添加到
元素中
尽管生成的最终结果HTML看起来是语法正确的HTML,但Razor代码不起作用
最终结果HTML:
<div id="div_1">
<label>Clients</label>
<ul>
@if (Model.details != null)
{
foreach (var itm in Model.details.OrderBy(i => i.value))
{
<li>@itm.value</li>}
}
</ul>
</div>
csHTML:
<div id="divDetails" class="row">
</div>
jQuery:
//getClientMap temporarily called from a button click
getClientMap(function (map) {
$.each(map, function (idx, obj) {
$('#divDetails').append('<div id="div_' + obj.detail_id + '">' +
'<label>' + obj.detail_hdr + '</label>' +
'<ul>' +
'@if (Model.details != null)' +
'{' +
'foreach (var itm in Model.details.OrderBy(i => i.value))' +
'{' +
'<li>' +
'@itm.value' +
'</li>' +
'}' +
'}' +
'</ul>' +
'</div>');
});
});
function getClientMap(output) {
$.ajax({
url: './Client/ClientMap',
type: "GET",
dataType: "json",
async: false,
success: function (data) {
output(data);
}
});
//通过单击按钮临时调用getClientMap
getClientMap(函数(映射){
$。每个(映射、函数(idx、obj){
$('#divDetails')。追加(''+
“+obj.detail_hdr+”+
“”+
“@if(Model.details!=null)”+
'{' +
'foreach(Model.details.OrderBy(i=>i.value))中的var-itm'+
'{' +
“- ”+
“@itm.value”+
“
”+
'}' +
'}' +
“
”+
'');
});
});
函数getClientMap(输出){
$.ajax({
url:“./Client/ClientMap”,
键入:“获取”,
数据类型:“json”,
async:false,
成功:函数(数据){
输出(数据);
}
});
我正在尝试动态地执行此操作,这样就可以通过表项轻松地添加/删除
,而不是编码更改
任何关于如何实现这一点的建议(或替代方法)都将不胜感激。jQuery在客户机上运行,因此当您使用它生成Razor代码时,客户机无法运行该代码,因为它必须在服务器上运行
您可以将Razor代码直接放在应该放的地方,然后根据需要使用jQuery显示/隐藏选项
或者,更改Ajax方法ClientMap
以返回部分视图而不是JSON字符串,然后使用jQuery的html()
函数添加从Ajax返回的html:
$('#divDetails').html(data);
哇,我患了“看不见树木的森林”综合症。用cshtml做这个标准剃须刀很简单。谢谢@Racil。
$('#divDetails').html(data);