2016-04-25 11 views
-1

js関数launchMyActivity()にもう1つのパラメータを指定してModelオブジェクト全体を渡そうとしています。機能はそれを取得していません。私がaler(passedObject.length)をしたとき、それは未確認のものです。はModelオブジェクトをjavascript関数に渡すことができません

私は他のことを試みましたが、何も機能しませんでした。 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. 
} 
+0

モデルはC#オブジェクトですが、JavaScriptに渡そうとしています。あなたはそれをjavascriptで理解できるようにそれをjsonifyする必要があります。 – nurdyguy

+0

これを試してください:http://stackoverflow.com/questions/6201529/turn-c-sharp-object-into-a-json-string-in-net-4 – nurdyguy

+0

CSHTMLを使用していますか?この関数を試してみてください。launchMyActivity(studentSISId) { alert( "Lenght:" + @ Model.length); } – Shan

答えて

0

あなたが01を渡すべきではありませんをjavascriptに追加するまず第一に、これがうまくいかないことがわかりました。 C#コードは、Webサーバー上の.Netランタイムによって実行されます。 Javascriptは、クライアントマシン上のWebブラウザによって実行されます。これらの2つは完全に異なる実行システムであり、実際には2つの間でセマンティックを渡すことはできません。

HttpRequesBaseは、MSDNを引用し、「は、Web要求中にクライアントから送信されたHTTP値を読み取るためにASP.NETを有効にするクラスの基本クラスとして機能します」。あなたはあなたのブラウザにasp.netを持っておらず、このクラスとそのメソッドはクライアント上では意味がありません。

モデルを代わりに指定する必要があります。サーバーとクライアントの間を行き来するのがあなたのモデルです。 HttpRequesBaseからクライアントにとって意味のある情報を抽出し、それをモデルに置きます。モデルは、通常、何の振る舞いも持たない単純なクラスであり、jsonに単純にシリアライズされた多数のプロパティを持っています。このようなモデルのためにこのビットにどのように情報を見つけるのはかなり簡単です。

関連する問題