2016-09-11 9 views
0

別のdivにデータを表示していて、javascript関数データを渡すとonclickが発生しません。親からのデータを子にキャストし、そのデータと共にJS関数を渡そうとした後では、親からのデータを使用するときに機能します。子モデルデータを使用しているときにJavaScript関数が起動しない

##view## 
@using WebApplication2.Models 
@model IEnumerable<WebApplication2.Models.OBJECT> 
@{ 
    ViewBag.Title = "CompAndMon"; 
} 
<script> 
//this function does not fire when called 
    function setO(OfficeLocation,Name,Email,Phone,NumComputers,NumMonitors) { 

     var text = "Primary Contact Name " + Name+"\n Primary Contact Email: " +Email +"\n Primary Contact Phone: " +Phone +"\n Number of Computers: " +NumComputers +"\n Number Of Monitors: " +NumMonitors; 
     var location = "Office Location: " + OfficeLocation; 
     document.getElementById("Nametag").innerHTML = location; 
     return document.getElementById("OCM").innerHTML = text; 
    } 
//this function does not fire when called 
    function setComputer(lastS) { 

     var text = "you selected Item No: " + lastS; 

     return document.getElementById("OCM").innerHTML = text; 
    } 
//this function operates correctly 
    function setMonitor(id) { 

     var text = "you selected Item No: " + id; 

     return document.getElementById("OCM").innerHTML = text; 
    } 
    </script> 


@foreach (var item in Model) 
        { 

         if (@item.Type == 1) 
         { 

          var office = item as Office; 
          var loc = @office.OfficeLocation; 
          var Name = @office.Name; 
          var email = @office.Email; 
          var phone = @office.Phone; 
          var mons = @office.NumMonitors; 
          var comps = @office.NumComputers; 
          <p><a onlick="setO(@loc,@Name,@email,@phone,@comps,@mons)">@office.Name</a></p> 
         } 
         else if (@item.Type == 2) 
         { 
          var computer = item as Computer; 
          <p>&ensp;&ensp;<a onclick="setComputer(@computer.LastUser)">@item.Name1</a></p> 
         } 
         else 
         { 
          var monitor = item as Monitor; 
          <p>&ensp;&ensp;&ensp;&ensp;<a onclick="setMonitor(@item.ID)">@item.Name1</a></p> 
         } 
        } 
<h2 id="Nametag" style="text-align:center"></h2> 
       <div id ="OCM"class="row"> 
        Select a computer or monitor and the information about the de will be displayed here. 
       </div> 

、ここでは、ビューは、システムを使用して ## OCM.cs ## を使用するクラスのモデルです。 using System.Collections.Generic; using System.ComponentModel.DataAnnotations; using System.Linq; using System.Web;

namespace WebApplication2.Models 
{ 
    public abstract class OBJECT 
    { 
     public int ID { get; set; } 
     public int Type { get; set; } 
     public string Name1 { get; set; } 
    } 
    public class Office:OBJECT 
    { 

     public string OfficeLocation { get; set; } 
     public string Name { get; set; } 
     public string Email { get; set; } 
     public string Phone { get; set; } 
     public int NumComputers { get; set; } 
     public int NumMonitors { get; set; } 
    } 
    public class Computer:OBJECT 
    { 

     public String LastUser { get; set; } 
     public String Name { get; set; } 
     public int NumMonitors { get; set; } 
     public String TotalHDSpace { get; set; } 
     public String FreeHDSpace { get; set; } 
     public int NumUpdates { get; set; } 
    } 
    public class Monitor:OBJECT 
    { 

     public String Manufacturer { get; set; } 
     public String ModelID { get; set; } 
     public String SerialNum { get; set; } 
     public int HoursON { get; set; } 
     public String LastTestTime { get; set; } 
     public String LastTestType { get; set; } 
    } 
} 

私は要素のクロムを検査する場合、それはデータが関数に渡されていることを示しているが、それは私が何をすべきかわからないので、実行されません。すべてのヘルプは

これがために同じである

Here shows that the data was passed to the JS functions when I inspect the element

答えて

0

私はsetO()呼び出しでミスペルトしたことがわかりました。私のカミソリ変数をjavascript関数に一重引用符で渡す必要がありました。

0

あなたが引用 setComputer( 'テッド・')またはsetComputer(\ "テッド\")せずに文字列を使用していないsetComputer(テッド)をいただければ幸いです電子メールとその他の引数

関連する問題