代码之家  ›  专栏  ›  技术社区  ›  Chris Kimpton

想在javascript文件中混合服务器端ASP.NETMVC扩展,但如何…呈现部分?

  •  0
  • Chris Kimpton  · 技术社区  · 15 年前

    我有一些常见的javascript功能,我想在多个视图/页面之间共享。

    不过,我想在javascript中添加一些C#/ASP.net,从服务器中提取一些数据。

    或者有没有其他更好的方法?

    编辑: 我意识到我可以使用ajax来拉入服务器代码(虽然我如何引用服务器Url.Content不起作用),但是这个代码是用来处理页面权限的,即服务器数据详细说明用户可以访问哪些函数,然后使用javascript函数来显示/隐藏基于此的按钮。因此,数据需要尽早呈现,而不是在ajax回调发生后触发要构建的页面。

    3 回复  |  直到 15 年前
        1
  •  1
  •   Mathias F    15 年前

    我通常把javascript需要的一些数据放在页面顶部。

    我在母版上有。

    不要忘记对这些值进行JavascriptEncode。Html编码是不够的,它不能处理'的。使用Web保护库 http://wpl.codeplex.com/

    <script language="JavaScript">
    var controller = <%= AntiXss.JavaScriptEncode(ViewContext.RouteValues.GetRequiredString("controller")) %>;
    var userRightRead = <%= AntiXss.JavaScriptEncode(Model.UserRightRead) %>;
    </script>
    
        2
  •  1
  •   Darin Dimitrov    15 年前

    但是我想放一些C#/ASP.net 在javascript中-引入一些

    jQuery :

    $.ajax({
        url: '/home/someaction',
        success: function(data) {
            alert(data);
        }
    });
    
        3
  •  1
  •   Castrohenge    15 年前

    我通常将javascript封装在一个类中,然后传入所需的视图模型值。

    var testClass = function(config){
        this.width = config.width;
        this.height = config.height; 
    
        this.showDimensions = function(){ 
            alert( this.width + " by " + this.height); 
        }
    }
    

    视图/局部视图将包含:

    <script>
    var dim = new testClass({ 
        width: <%=Model.Width %>
        height: <%=Model.Height %>
    })
    
    dim.showDimensions();
    </script>