【发布时间】:2011-09-09 21:59:30
【问题描述】:
我正在使用带有 C# 2.0 的 ASP.NET。我为数据库创建了一些对象,每个对象都具有可以本地调用或以类似方式调用的属性,并从中创建RESTful JSON API。
我有很多类似标签的东西,我喜欢在这个网站上称之为“模块”——模块的功能是将数据转换为 HTML 以显示在页面上。理想情况下,这需要在服务器端 C# 代码中完成,以便加载第一个选项卡,然后在单击选项卡时使用 Ajax 加载其他选项卡,但是对于旧浏览器和搜索引擎,选项卡仍然是一个链接,将加载相同的 HTML 代码服务器端。
目前,我将 JavaScript 代码与将每个模块转换为 HTML 的 C# 代码完全分开编写,但方法几乎相同,只是语言不同。类似于这个例子。
C# 代码
public override string GetHtml()
{
IJsonObjectCollection<Person> response = ((Village)page).People;
string html = "<div id=\"test\">";
foreach (Person person in response)
{
html += "<div class=\"person\">";
html += person.Name;
if(canEdit) html += "*";
html += "</div>";
}
return html + "</div>";
}
JavaScript 代码
function getHtml() {
JsonRequest('/json/villages/1/people', function(response) {
var html = '<div id="test">';
for (int i = 0; i < response.length; i++)
{
var person = response[i];
html += '<div class="person">';
html += person.name;
if(canEdit) html += '*';
html += '</div>';
}
return html + '</div>';
});
}
您可能会看到我要回答这个问题的地方。这样做最有效的方法是什么?我在想几个不同的选择 -
1. 每个 ModuleToHtmlMethod 都可以是一个类,它定义了将此数据对象转换为 HTML 的方法。我尝试过这个,但我因为太复杂而停止了。
2. 编写我自己的脚本语言,可以解释为 C#,也可以“编译”成 JavaScript 代码。
3. 只需用 C# 编写大量内容,然后使用 Ajax 简单地从 C# 请求 HTML 内容
4.保持代码分开,每个方法写两次。
我希望最终允许其他开发人员编写这些“模块”,所以也许选项 2 是最好的选择?
【问题讨论】:
标签: c# javascript .net ajax json