首页 > 解决方案 > 无法从模型中引用 asp:HIddenField

问题描述

在编写作业编码时,我需要将数据从代码隐藏传输到视图,以便我可以使用 Javascript 解析该数据并使用它构建一些 HTML,我决定使用 asp:HiddenField 来实现这一点.

但是,似乎出了点问题,因为我收到错误“当前上下文中不存在名称“HiddenFieldData””。

我假设我没有正确地将视图链接到模型。也许是因为我使用的模型不是合适的 cshtml.cs,而是通过控制器“给定”给视图的模型。说实话,这是我第一次使用 ASP.NET,所以问题很可能出在此处。

有问题的代码,我用'>>>>'标记了问题点:

控制器 -

public class saveController : Controller
    {
        // GET: Save
        public ActionResult SaveRoute()
        {
            saveModel model = new saveModel();
Model given >>>> return View(model);
        }
    }

模型 -

public class saveModel
    {
        private DataMiner miner;
        public saveModel(string ip = "127.0.0.1", int port = 5400, int duration = 10, int interval = 1000)
        {
            // Initialize miner
            miner = new DataMiner(ip, port, duration, interval);
        }

        public void SaveRoute()
        {
            // Mine and retrieve data
            miner.Mine();
            double[][] data = miner.GetData();
            int lines = data.GetLength(0);
            int cols = data.GetLength(1);

            string[] str_data = new string[lines];
            for (int i = 0; i < lines; ++i)
            {
                // Turn double data into strings to write
                str_data[i] = data[i].ToString();
            }

            // Write to file
            System.IO.File.WriteAllLines(@"file1.txt", str_data);

            // Write values to HiddenField
            string values = String.Join(" ", str_data);
 Error here >>>> HiddenFieldData.Value = values;

            // Call JS function to load at
            ScriptManager.RegisterStartupScript(this, GetType(), "showDataMined", "showDataMined();", true);
        }
    }

看法 -

@model RESTful_Flight_Simulator.Models.saveModel
@{
    ViewBag.Title = "SaveRoute";
}

<html>
<head>
    <asp:ScriptManager ID="ScriptManager1" runat="server" EnablePageMethods="true" />
    <script type="text/javascript" language="javascript">
        function showDataMined()
        {
            var body = document.body
            var tbl  = document.createElement('table');
            tbl.style.width  = '100px';
            tbl.style.border = '1px solid black';

            for (var i = 0; i < 3; i++)
            {
                var tr = tbl.insertRow();
                for (var j = 0; j < 2; j++)
                {
                    if (i == 2 && j == 1) { break; }
                    else
                    {
                        var td = tr.insertCell();
                        td.appendChild(document.createTextNode('Cell'));
                        td.style.border = '1px solid black';

                        if (i == 1 && j == 1) {
                            td.setAttribute('rowSpan', '2');
                        }
                    }
                }
            }
            // Build title for table
            var title = document.createElement('h3');
            title.innerHTML = "Data mined:";
            // Finally, append title and table to body
            body.appendChild(document.createElement('hr'));
            body.appendChild(title);
            body.appendChild(tbl);  
        }
    </script>
</head>
<body>
HiddenField >>>> <asp:HiddenField id="HiddenFieldData" runat="server" value="" />
    <h2>Saving route...</h2>
</body>
</html>

提前感谢您的帮助!

标签: c#asp.netasp.net-mvc

解决方案


推荐阅读