无法将Model对象传递给javascript函数

时间:2016-04-25 18:04:14

标签: javascript jquery .net asp.net-mvc-4

我试图将整个Model对象与另一个参数一起传递给js函数launchMyActivity()。但功能是没有得到它。当我做aler(passedObject.length)时,它会给出不明身份的信息。

我尝试了其他的东西,但没有任何效果。Referred this but didnt worked

我不确定我的实施有什么问题。

型号:

public class RequestDTO
{
    public HttpRequestBase RequestDto { get; set; }
    public List<User> Users { get; set; }
    public string ActionId { get; set; }
    public string UserSampleID { get; set; }
}

查看:

@model RequestDTO
<body>
        @Scripts.Render("~/bundle/js/Area/SelectedStudentActivity")
        <div class='popOver' style="z-index: 1012;">
            <div id='popOverMsg'>Select the student you want to Launch this Activity for:..</div><br /><br />
            @foreach(var user in Model.Users)
            {                
                <a id="selectedAnchor" data-id="@user.id" style="cursor:pointer" onclick="launchMyActivity(@user.UserID,@Model)">@user.name</a><br />
            }
        </div>
</body>

JS:

function launchMyActivity(studentSISId, requestDTO)
{
    alert("Lenght : " + requestDTO.length); //I get undefined here

    //Below this I need to make AJAX call and pass this requestDTO object.
}

1 个答案:

答案 0 :(得分:0)

您不应该将current_user传递给javascript。首先,你发现这不会起作用。您的C#代码由Web服务器上的.Net运行时执行。 Javascript由客户端计算机上的Web浏览器执行。这两个是完全不同的执行系统,你不能真正在两者之间传递语义。

HttpRequestBase,引用MSDN,&#34; 作为类的基类,使ASP.NET能够读取Web请求期间客户端发送的HTTP值&# 34 ;.你的浏览器上没有asp.net,这个类及它的方法对客户端没有意义。

您需要做的是定义模型。它是您的模型,您希望在服务器和客户端之间传递。从HttpRequesBase中提取对客户端有意义的任何信息,并将其放入模型中。模型通常是一个没有任何行为(方法)的简单类,并且只有许多属性可以简单地序列化为json。对于那样的模型,有很多很容易找到的信息。