繁体   English   中英

使用子模型数据时,JavaScript函数不会触发

[英]JavaScript function does not fire when using child model data

我正在尝试在单独的div中显示数据,当我传递我的javascript函数数据时,它不会触发onclick。 当我使用来自父级的数据但在将父级的数据强制转换为子级并尝试将JS函数与该数据一起传递后,它才起作用。

##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>

这是视图通过System使用## OCM.cs ##的类模型; 使用System.Collections.Generic; 使用System.ComponentModel.DataAnnotations; 使用System.Linq; 使用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; }
    }
}

当我检查chrome元素时,它表明该函数正在传递数据,但是它没有运行,所以我不确定该怎么做。 任何帮助,将不胜感激

这里显示当我检查元素时数据已传递给JS函数

您使用不带引号的字符串setComputer('ted')或setComputer(\\“ ted \\”)而不是setComputer(ted)

电子邮件和其他参数都一样

我发现我在setO()调用中遗漏了onclick,需要将剃刀变量以单引号传递给javascript函数。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM