C#函数调用cshtml

时间:2016-05-04 10:12:45

标签: javascript c# asp.net

我无法在CSHTML页面中调用函数。

在我的cshtml页面脚本中:

 <script type="text/javascript" >
        //var sLoggedInUser = <%# GetSession_LoggedInIdUser() %>;
        $(document).ready(function () {
            alert("dom");

            var sLoggedInUser = PageMethods.GetSession_LoggedInUserName();          

            alert(sLoggedInUser);
        });


        function btnClick() {
            alert("btn click");
        }

    </script>

dom被警告,按钮点击功能运行良好,但没有获得sLoggedInUser的值。 在我的cs页面中:

 protected string GetSession_LoggedInUserName()
        {
            SessionConfiguration Obj_Configuration = (SessionConfiguration)Session["Configuration"];
            return Obj_Configuration.LoggedInUserName;
        }

我也尝试使用:var sLoggedInUser = <%= PageMethods.GetSession_LoggedInUserName() %> // var sLoggedInUser = GetSession_LoggedInUserName()

3 个答案:

答案 0 :(得分:2)

FileFilter docx = new FileNameExtensionFilter("MS Word file(.docx)", "docx");
FileFilter doc = new FileNameExtensionFilter("MS Word file(.doc)", "doc");
FileFilter pdf = new FileNameExtensionFilter("Pdf file(.pdf)", "pdf");
chooser.addChoosableFileFilter(docx);
chooser.addChoosableFileFilter(doc);
chooser.addChoosableFileFilter(pdf);
chooser.setFileFilter(docx);
chooser.setAcceptAllFileFilterUsed(false);
int ret = this.chooseLeft.showOpenDialog(chooserFrame);
if(ret == JFileChooser.APPROVE_OPTION){
try{
File leftFile = this.chooseLeft.getSelectedFile();
leftfileName =  leftFile.getName().toLowerCase();
}catch(Exception e){
e.printStackTrace();
}

将无效,因为您无法直接从javascript调用服务器端方法。

var sLoggedInUser = PageMethods.GetSession_LoggedInUserName();

更接近,但会输出像

这样的javascript
var sLoggedInUser = <%= PageMethods.GetSession_LoggedInUserName() %>

但是这不是有效的javascript,因为字符串没有用引号括起来。但是,你不能只依靠

var sLoggedInUser = John Smith

因为你可能有一个像Paddy O'Brien这样名字的用户,它会在名称中用撇号来终止字符串(并且切换到单引号并不是真的更安全)。您可能还需要担心其他字符,因此您应该使用函数将字符串转换为Json。我不确定那是什么因为我习惯使用Razor和辅助函数,但是如果你可以访问帮助器那么它就像是

var sLoggedInUser = '<%= PageMethods.GetSession_LoggedInUserName() %>'

答案 1 :(得分:0)

声明你的函数public static而不是protected

public static string GetSession_LoggedInUserName()
{
        SessionConfiguration Obj_Configuration = (SessionConfiguration)Session["Configuration"];
        return Obj_Configuration.LoggedInUserName;
}

并像这样调用cshtml

<script type="text/javascript" >
    $(document).ready(function () {
        var sLoggedInUser = '@PageMethods.GetSession_LoggedInUserName()'
        alert(sLoggedInUser);
    });
</script>

答案 2 :(得分:0)

方法应该是这样的,staticWebMethod

[WebMethod]
public static string GetSession_LoggedInUserName()
{
 ...
}