无法将模型对象传递给javascript函数
我试图将整个模型对象和另一个参数传递给js函数launchMyActivity()。但是函数没有得到它。当我执行无法将模型对象传递给javascript函数,javascript,jquery,.net,asp.net-mvc-4,Javascript,Jquery,.net,Asp.net Mvc 4,我试图将整个模型对象和另一个参数传递给js函数launchMyActivity()。但是函数没有得到它。当我执行aler(passedObject.length)时,它给出的是未识别的 我试过其他的方法,但都没用 我不确定我的实现有什么问题 型号: public class RequestDTO { public HttpRequestBase RequestDto { get; set; } public List<User> Users { get; set; }
aler(passedObject.length)
时,它给出的是未识别的
我试过其他的方法,但都没用
我不确定我的实现有什么问题
型号:
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>
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.
}
您不应该将
HttpRequestBase
传递给javascript。首先,正如你发现的那样,这是行不通的。您的C#代码由web服务器上的.Net运行时执行。Javascript由客户端计算机上的web浏览器执行。这两个是完全不同的执行系统,您无法在两者之间传递语义
HttpRequestBase
,引用MSDN,“作为使ASP.NET能够在Web请求期间读取客户端发送的HTTP值的类的基类”。您的浏览器上没有asp.net,该类及其方法在客户端上没有意义
您需要做的是定义您的模型。这是您想要在服务器和客户端之间传递的模型。从HttpRequestBase中提取对客户端有意义的任何信息,并将其放入模型中。一个模型通常是一个没有任何行为(方法)的简单类,并且只有一些简单地序列化为json的属性。对于这样的模型,有很多很容易找到的信息如何使用这一点。Model是一个C#对象,但您正试图将其传递到javascript中。您需要对它进行jsonify,以便javascript能够理解它。试试这个:您使用的是CSHTML吗??尝试此函数launchMyActivity(studentSISId){alert(“Lenght:+@Model.length);}