服务器端和客户端方法

Con*_*ell 6 .net javascript c# ajax json

我在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>";
}
Run Code Online (Sandbox Code Playgroud)

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>';
    });
}
Run Code Online (Sandbox Code Playgroud)

你可能会看到我对这个问题的看法.这样做最有效的方法是什么?我在考虑几种不同的选择 -

1.每个ModuleToHtmlMethod都可以是一个类,它定义将此数据对象转换为HTML的方法.我尝试了这个,但我停了下来因为我太复杂了.

2.编写我自己的脚本语言,可以解释为C#,但也"编译"成JavaScript代码.

3.只需在C#中编写批次并使用Ajax简单地从C#请求HTML内容

4.保持代码分离并将每个方法写入两次.

我想最终允许其他开发人员编写这些"模块",所以选项2可能是最好的选择吗?

Giu*_*olo 1

我会放弃选项 4,因为它会使维护变得更加困难,并且最终可能会导致通过 Javascript 生成的 HTML 与 C# 代码生成的 HTML 之间不同步。我还会放弃选项 2,因为这可能会使代码对其他开发人员来说更加困难,而且可能也没有必要。

我肯定会在一处生成 HTML,并可能公开使用 C# 现有函数返回 HTML 片段的 RESTful HTML API。所以从你的 Javascript 中你可以调用:

function getHtml() {
    MyHtmlRequest('/html/villages/1/people', function(response) {
        var html = response.Text;
        return html;
    });
}
Run Code Online (Sandbox Code Playgroud)